2009-10-30 17 views
0

如何測試一個文件在所有存在的分支中是否相同?
即使構建腳本的僞代碼也會有所幫助。SVN,測試它存在的所有分支中的文件是否相同

謝謝。

編輯: 我不得不對5個分支的約900個文件執行此操作。很長的故事。
事實證明,最簡單的做法是隻檢查一切,並使用標準的命令行工具來完成這項工作。

謝謝大家的建議。

+0

下面是一篇關於分支之間的版本比較http://www.murrayc.com/blog/permalink/2007/01/25/subversion-diff-between-branches/ – 2009-10-30 14:49:32

回答

1

最簡單(最快)的方法是比較文件的版本號,因爲分支和標記不會改變它們。

如果你按照這個路徑,你不檢查身份,但如果文件是在分支中更改,這通常更重要。

因此,如果有人將文件更改爲文件,然後反向合併回舊版本,則會報告虛警。爲避免這種情況,您可以區分具有不匹配版本的文件。

您可以通過

svn ls -vR REPO_URL/path/to/file 

或漂亮的XML獲得最新修訂版中的所有文件的版本號:

svn ls --xml -R REPO_URL/path/to/file 

如果你知道,該文件路徑(相對距離trunk)在整個存儲庫中都是唯一的,您可以使用grep獲取所有分支文件:

svn ls -vR REPO_URL/ | grep /path/to/file/without/trunk 

然後,你必須有所有相關信息,只是需要解析。(但SVN LS -vr REPO_URL /是真的慢)

+0

我想這應該工作,如果相同的文件分別添加到2個分支,對吧?謝謝。 – z5h 2009-10-30 20:32:40

+0

不然,這將報告diofference(因爲修訂不一樣),這通常不是正確的方式,並與svn合併將是困難的 – 2009-10-31 08:29:55

+0

是的,我知道。這是/是一團糟。我不得不使用svn開發者的差異補丁來讓svn合併各個分支而不會崩潰。 – z5h 2009-11-02 15:23:04

2

像下面這樣的東西?

 
foreach(branch in project/branches/*) 
    svn diff project/trunk/relative_path_to_file branch/relative_path_to_file 
相關問題