2009-01-24 113 views
0

由於多種原因,我擁有的某些文件的規範源代碼不能作爲存儲庫的工作副本(Subversion服務器位於無法訪問的防火牆後面,並且數據本身不存在於我的文件系統中優選結構)。所以,我編寫了一個工具下載數據,從中生成目錄結構,然後使用SharpSvn將結果導入到存儲庫中。這是第一次。第二次,當然,該名稱的目錄已存在於存儲庫中,我無法再次導入。多次導入到相同的Subversion存儲庫目錄?

相反,我可以:

  1. 刪除目錄,然後進口。我沒有測試過這個,但除了聽起來很愚蠢之外,它可能也會刪除相應文件的修訂歷史記錄,對於新文件完全不同。
  2. 查看目錄是否存在,檢查出來,遠程刪除規範源中不再存在的文件,然後替換餘數並提交。這可能會起作用,但聽起來很容易出錯並且不必要地困難。

我的假設是否正確,刪除文件會標記與不同的文件相同的新方法?有沒有比第二種方法更簡單的方法?

回答

2

對於1),它不會刪除修訂歷史,但新文件將被視爲與舊版本完全無關。儘管如此,你仍然可以獲得舊文件。

對於2),這將是推薦的方式。但是,在'svn刪除現有文件並添加新文件之後,您還必須在提交之前'svn添加'這些新文件。

但似乎你應該考慮使用svn-load-dirs.pl腳本。你可以在Subversion書籍「Vendor branches」一章中閱讀。

0

Subversion與文件的連接鬆散。對於文件夾內的文件,您可以輕鬆進行獲取/更新,進行大量更改(包括刪除,替換或添加文件),然後提交差異。該文件級別的行爲是典型的Subversion使用情況。

這些目錄稍有不同。 Subversion將文件庫信息存儲在文件夾級別。所以,如果你創建一個新的文件夾,它不會自動連接到Subversion。 (使用類似TortoiseSvn的東西,它會爲您處理大部分問題。)

如果您要在生成過程中添加和刪除目錄,則會出現與文件本身稍有不同的問題。但是,您仍然可以通過命令行,SharpSvn,TortoiseSvn或其他類似工具實現您的目標。

0

由於您無法覆蓋目錄,或者您將銷燬.svn目錄並丟失所有存儲庫信息,因此您必須複製這些文件,但只能創建新目錄。這是我會怎麼做,從Subversion工作中複製要更新:

(cd <newdirectory> ; tar -cf - *) | tar -xf - 

授予您需要一個Unix-y座標系。它應該與Cygwin一起工作,除非Windows在系統級別上做了一些特別離奇的覆蓋文件夾。

相關問題