2009-01-21 63 views
10

我被要求回顧SVN修訂號123,178,199,245和288中所做的更改 - 這些都是與特定功能相關的所有提交。解決這個問題的合理方法是什麼?我想我真的想以某種方式看到收集到的差異,但我願意接受建議。我們現在正在修訂400版。看到顛覆中的許多提交組合的差異?

編輯:我喜歡知道如何在命令行中做一些事情,但任何在eclipse或intellij idea(或任何單獨的應用程序)中工作的解決方案也是受歡迎的。我也故意打開什麼我可以切實希望自動化/獲取工具支持,因爲我真的不知道如何以聰明的方式做到這一點。

回答

5

生成5個不同的提交,並將它們全部與patchutilscombinediff合併。

+0

這會surpress反覆更改同一行代碼? – krosenvold 2009-01-21 17:57:55

+0

太棒了!我從來沒有聽說過combinediff – orip 2009-01-21 21:18:35

+0

> combinediff創建了一個表示兩個差異總和的統一差異。 所以我相信是的,它會抑制相同行代碼的相關變化。 – squadette 2009-01-22 05:27:43

0

bendinthis的回答問題有一個函數來打印所收集的差異文件的所有版本。它可以很容易地修改,以打印您所感興趣的版本的收集的差異。

+0

就我所見,在這個問題中甚至沒有任何關聯,或者我錯過了你所看到的東西? – krosenvold 2009-01-21 17:29:29

+0

編輯我的答案,說明爲什麼我認爲其他問題很有用 – 2009-01-21 17:35:49

0

您沒有指定是否想基於diff的HEAD或每個連續的REV編號(這不知道爲什麼你真的想要要做到這一點?(不承諾如果你不是這個意思))。


#!/bin/bash 
for revision in 123 178 199 245 288; 
do 
      svn diff http://path/to/svn/[email protected] http://path/to/svn/[email protected]$revision > $revision.diff 
done 

請,窗戶扇男孩,downvote我,因爲我的答案涉及bash shell的,而不是Windows外殼(儘管原來的職位從來沒有提一個OS)

1

我問過類似的問題,關於extracting relevant changes for code review但沒沒有一個滿意的答案。我最接近的解決方案是做我剛剛提到的事情,創建一個臨時分支並挑選有趣的提交到該臨時分支。如果他們乾淨地結合在一起,那麼整個三角洲可以立即進行審查。如果它們不能幹淨地結合並依賴於另一個無關的變化,那麼也許這意味着整個批次應該一次全部審查。

4

在IntelliJ IDEA的周圍挖後,我找到了一個不錯的解決方案是:

選擇版本控制|顯示更改視圖。

在左側選擇存儲庫並單擊要查看的所有修訂。

在右側窗格中,您將看到受所選修訂版影響的所有文件的列表。當你選擇「差異」時,你會看到所選變更集的內部變化。未顯示的提交中發生的(如可預期的)內部重新作品

1

即使這個問題早就結束了與,其實我寫了一個腳本今天是沿着這些線路:


#!/bin/bash 

[email protected] 
LAST_REVISION="NULL" 
MASTER="master"        # path to WC 

for THIS_REVISION in ${REVISIONS[@]}; 
do 
    if [ "$LAST_REVISION" != "NULL" ]; 
    then 
     svn diff $MASTER -r ${LAST_REVISION}:${THIS_REVISION} --summarize | while read f; 
     do 
      echo ${f#* } | sed "s/[a-zA-Z0-9:\/.]*$MASTER\///" >> "$LAST_REVISION-to-$THIS_REVISION.log" 
     done 
    fi 

    LAST_REVISION=$THIS_REVISION 
done 

,你可以把它像「my_diff_script.sh REV1轉2 REV3 rev4」

輸出將是:

 
rev1-to-rev2.log 
rev2-to-rev3.log 
rev3-to-rev4.log