有沒有可以將特定文件或目錄從一個回購站複製到另一個回收站(都是遠程的)的任何工具(或者svnsync可以這樣做,我認爲不可以)?將SVN回購的部分複製到另一個
我想爲代碼庫提供只讀倉庫,但只提供該庫的一個子集,而不是整個項目。
謝謝。
有沒有可以將特定文件或目錄從一個回購站複製到另一個回收站(都是遠程的)的任何工具(或者svnsync可以這樣做,我認爲不可以)?將SVN回購的部分複製到另一個
我想爲代碼庫提供只讀倉庫,但只提供該庫的一個子集,而不是整個項目。
謝謝。
如果你不介意弄髒你的手,你可以編寫一個腳本來導出私人項目的文件,並將svn-clean-files提交給你的公共項目。
這種方式即使svn在公共項目上的差異可能儘管這不同於原始的svn歷史。但那很好,因爲它不是有意的。
像這樣的cron工作?
#!/bin/bash
EXPDIR=$(mktemp -d /tmp/projectXXXXXX)
svn export --force svn+ssh://[email protected]/repository/project/sub/ $EXPDIR/
svn add $EXPDIR/ svn+ssh://[email protected]/repository/subpart/
cd $EXPDIR/
svn ci -m "update `date`" $EXPDIR/
#cleanup
rm -rf "/tmp/$EXPDIR"
我建議您使用externals definitions作爲解決方案。爲代碼庫的只讀子集創建新的存儲庫,並將其映射到項目的子文件夾。
雖然@ initall的解決方案是可行的,但您會丟失歷史記錄信息等。我建議您使用svnsync,正如您建議的那樣。
由於1.5 svnsync只能同步源回購的子樹,因此我認爲這是一個更清潔的解決方案,您可以在每個回購中擁有不同的訪問權限。有關詳細信息,請參見svn手冊中的repository replication部分。
麻煩的是,任何有權訪問外部屬性的人都可以使用它訪問所有源代碼回購。我想讓源代碼保持私有狀態(實際上沒有能力更改任何用戶/權限),但是在第二個回購站中公開提供一個小子集。 – 2010-11-29 12:49:16
@Jack Sleight,如果你不能改變任何權限你想如何限制對只讀存儲庫的訪問?我的意思是,即使你找到了解決方案,每個人仍然可以在你的「私人」存儲庫中更改文件。 – bniwredyc 2010-11-29 13:10:50
我可以在目標/公共/只讀倉庫上設置權限,而不是在沒有公共權限的私人倉庫中設置權限。 – 2010-11-29 13:18:27