當用戶對某個文件或目錄執行了復制和重命名操作之后,Subversion 存儲庫就會跟蹤該歷史記錄。不幸的是,在 Subversion 1.0 中,只有一個客戶端子命令實際利用了此功能,即 svn log。大量的其它命令(例如 svn diff 和 svn cat)應該自動跟蹤重命名歷史記錄,但卻未實現此功能。
在所有這些情況下,基本的解決方法就是在舊版本中使用 'svn log -v' 發現正確的路徑。
例如,假設您在修訂版 200 中將 /trunk 復制到 /branches/mybranch 中,然后在后續的版本中將某些更改提交到 /branches/mybranch/foo.c 中,F在,您希望比較文件的 80 修訂版和 250 修訂版。
如果您具有該分支的一個工作副本并運行 svn diff -r80:250 foo.c,您將看到一條有關在修訂版 80 中不存在 /branches/mybranch/foo.c 的錯誤信息。要補救,應該在您的分支或文件中運行 svn log -v 以便發現在修訂版 200 之前該目錄就已被命名為 /trunk/foo.c,然后直接比較這兩個 URL: $ svn diff http://.../trunk/foo.c@80 \ http://.../branches/mybranch/foo.c@200 掌握創建分支的時機
這是一個容易引起爭議的問題,事實上它取決于您的軟件項目培養。沒有規定通用的策略,僅在此描述三種常見的。
從不分支系統(常用于還沒有可運行代碼的初始項目。) 用戶將他們的日常工作提交到 /trunk 中。 用戶開始提交一系列復雜更改時,/trunk 偶爾會“損壞”(無法進行編譯或功能測試失。。
優點:此策略非常容易遵守。新開發人員進入的門檻很低。不需要學習如何進行分支或合并。