2009-01-21 60 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