2009-11-24 165 views

回答

56

你可以下手:

svn diff http://REPOS/trunk http://REPOS/branches/B 

(其中http://REPOS是你的,包括trunkbranches父母庫路徑)

這將打印大量的文本,包括所有的文本更改,但不包括二進制更改,除了說明它們發生的時間和地點。

+12

謝謝!你的回答讓我看到這個http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-diff.html,它解釋瞭如何對TortoiseSVN做同樣的事情。 – tukushan 2009-11-24 21:18:42

+0

速記 - >'svn diff ^/trunk ^/branches/B' – cchamberlain 2015-10-09 17:39:44

0

這裏有一個post from Murray Cumming它描述了非顯而易見的過程:

  • 發現版本號:你需要知道每個分支的最新版本的版本號。它看起來像svn日誌是唯一的方法來做到這一點。
  • cd進入其中一個分支目錄,如中繼線。
  • 供應版本號的svn diff命令:svn diff -r123:145
+1

這不就是告訴你自從上次提交到分支後'trunk'發生了什麼變化嗎?如果我錯過了某些東西,我很抱歉 - 這裏遲到了...... – SimonJ 2009-11-24 01:10:39

+0

您不需要在每個分支中查找最新版本號:只需使用「HEAD」即可。但這不是OP要求的 - 他想在他的分支和主幹之間進行比較,而不是在同一分支的兩個修訂之間進行比較。 – Ether 2009-11-24 01:33:20

1

感謝信息傢伙,我會添加一些東西來提高diff結果的可讀性。如果您使用: svn diff svn:// url:9090/branches/PRD_0002 svn:// url:9090/branches/TST_0003> svn_diff_filename.txt

您可以使用: FINDSTR 「索引:」 C:\路徑\ svn_diff_filename.txt> svn_diff_file_list.txt

那會帶給您有任何差異文件的讀取列表。

4

我通常檢查出兩個分支(或分支和幹線)到目錄。 然後,我使用Kompare或類似的圖形工具(取決於您的偏好,操作系統,...)。 當我需要執行復雜的合併時,這對我非常有用。

0

到分支的兩個版本之間的差異:

svn diff -r rLATEST:rOLD 

使用svn log以獲得不同的版本。使用可以使用svn log -l 5限制日誌中的修訂數量。只會顯示最後5個修訂版本。

12

如果你只是尋找高水平的哪些文件是不同的,不希望看到所有的內容,使用方法:

svn diff ^/trunk ^/branches/dev --summarize

(與此相比干線和Dev分支)

2

由於缺乏聲譽不會讓我添加這個作爲對現有答案的評論,所以我不得不將它作爲單獨的一個添加。

對我而言,svn diff的一個有用選項是--ignore-properties。我的兩個分支已經結束了相同的代碼明智的,但有不同的合併歷史。

使用--ignore-properties允許我向自己證明是這種情況,而不需要涉及大量的「svn:mergeinfo」屬性更改。