我被要求查看SVN修订号123,178,199,245和288中所做的更改 - 这些是与特定功能相关的所有提交。解决这个问题的合理方法是什么?我想我真的想以某种方式看到收集的差异,但我愿意接受建议。我们现在正在修订版400.
编辑:我想知道如何在subversion中从命令行执行操作,但是也欢迎任何在eclipse或intellij idea(或任何单独的应用程序)中工作的解决方案。我也故意打开 我真实希望自动化/获得工具支持,因为我真的不知道如何以聪明的方式做到这一点。
答案 0 :(得分:5)
生成五个不同的提交,并将它们全部与combinediff的patchutils结合使用。
答案 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)
答案 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(尽管原帖从不提及操作系统)