2010-11-29 47 views
0

有沒有可以將特定文件或目錄從一個回購站複製到另一個回收站(都是遠程的)的任何工具(或者svnsync可以這樣做,我認爲不可以)?將SVN回購的部分複製到另一個

我想爲代碼庫提供只讀倉庫,但只提供該庫的一個子集,而不是整個項目。

謝謝。

回答

1

如果你不介意弄髒你的手,你可以編寫一個腳本來導出私人項目的文件,並將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" 
1

我建議您使用externals definitions作爲解決方案。爲代碼庫的只讀子集創建新的存儲庫,並將其映射到項目的子文件夾。

+0

麻煩的是,任何有權訪問外部屬性的人都可以使用它訪問所有源代碼回購。我想讓源代碼保持私有狀態(實際上沒有能力更改任何用戶/權限),但是在第二個回購站中公開提供一個小子集。 – 2010-11-29 12:49:16

+0

@Jack Sleight,如果你不能改變任何權限你想如何限制對只讀存儲庫的訪問?我的意思是,即使你找到了解決方案,每個人仍然可以在你的「私人」存儲庫中更改文件。 – bniwredyc 2010-11-29 13:10:50

+0

我可以在目標/公共/只讀倉庫上設置權限,而不是在沒有公共權限的私人倉庫中設置權限。 – 2010-11-29 13:18:27

1

雖然@ initall的解決方案是可行的,但您會丟失歷史記錄信息等。我建議您使用svnsync,正如您建議的那樣。

由於1.5 svnsync只能同步源回購的子樹,因此我認爲這是一個更清潔的解決方案,您可以在每個回購中擁有不同的訪問權限。有關詳細信息,請參見svn手冊中的repository replication部分。

相關問題