在颠覆中看到许多提交的组合差异?

时间:2009-01-21 17:23:16

标签: svn

我被要求查看SVN修订号123,178,199,245和288中所做的更改 - 这些是与特定功能相关的所有提交。解决这个问题的合理方法是什么?我想我真的想以某种方式看到收集的差异,但我愿意接受建议。我们现在正在修订版400.

编辑:我想知道如何在subversion中从命令行执行操作,但是也欢迎任何在eclipse或intellij idea(或任何单独的应用程序)中工作的解决方案。我也故意打开 我真实希望自动化/获得工具支持,因为我真的不知道如何以聪明的方式做到这一点。

6 个答案:

答案 0 :(得分:5)

生成五个不同的提交,并将它们全部与combinediffpatchutils结合使用。

答案 1 :(得分:4)

在深入了解IntelliJ的想法之后,我找到了一个很好的解决方案:

选择版本控制|显示更改视图。

在左侧选择存储库,然后单击要查看的所有修订。

在右侧窗格中,您将获得受所选修订影响的所有文件的列表。选择“diff”时,您将看到所选变更集中的内部更改。提交中发生的内部重新工作未显示(可以预期)

答案 2 :(得分:1)

我问了一个关于extracting relevant changes for code review的类似问题,但没有得到满意的答案。我最接近解决方案的是做我提到的事情,创建一个临时分支并挑选有趣的提交到该临时分支。如果它们结合得很干净,那么可以立即检查整个三角洲。如果他们没有干净地结合并依赖于另一个无关的变化,也许这意味着无论如何都应该立即审查整个批次。

答案 3 :(得分:1)

即使这个问题已经过去了,我实际上今天写了一个脚本:


#!/bin/bash

REVISIONS=$@
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 rev2 rev3 rev4”

输出将是:

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

答案 4 :(得分:0)

bendinthis问题的回答有一个功能,可以为文件的所有版本打印收集的差异。可以轻松修改它以打印您感兴趣的修订版本的收集差异。

答案 5 :(得分:0)

您没有指定是否要根据HEAD或每个连续的REV编号(我不确定您实际上想要这样做的原因?)(如果您不是故意的话,不要提交)。


#!/bin/bash
for revision in 123 178 199 245 288;
do
          svn diff http://path/to/svn/file@HEAD http://path/to/svn/file@$revision > $revision.diff
done

拜托,Windows粉丝男孩,请求我,因为我的答案涉及bash shell而不是windows shell(尽管原帖从不提及操作系统)