我被要求查看SVN修订号123,178,199,245和288中所做的更改 - 这些是与特定功能相关的所有提交。接近这个的合理方法是什么?我想我真的想以某种方式看到收集的差异,但我愿意接受建议。我们现在正在修订版400。
编辑:我想知道如何在subversion中从命令行做一些事情,但是也欢迎在eclipse或intellij想法(或任何单独的应用程序)中工作的任何解决方案。我也故意开放 什么 我实际上可以希望自动化/获得工具支持,因为我真的不知道如何以聪明的方式做到这一点。
我被要求查看SVN修订号123,178,199,245和288中所做的更改 - 这些是与特定功能相关的所有提交。接近这个的合理方法是什么?我想我真的想以某种方式看到收集的差异,但我愿意接受建议。我们现在正在修订版400。
编辑:我想知道如何在subversion中从命令行做一些事情,但是也欢迎在eclipse或intellij想法(或任何单独的应用程序)中工作的任何解决方案。我也故意开放 什么 我实际上可以希望自动化/获得工具支持,因为我真的不知道如何以聪明的方式做到这一点。
生成五个不同的提交,并将它们全部组合在一起 combinediff 从 patchutils。
生成五个不同的提交,并将它们全部组合在一起 combinediff 从 patchutils。
在深入了解IntelliJ的想法后,我找到了一个很好的解决方案:
选择版本控制|显示更改视图。
在左侧,选择存储库,然后单击要查看的所有修订。
在右侧窗格中,您将获得受所选修订影响的所有文件的列表。选择“diff”时,您将看到所选变更集中的内部更改。未显示提交中发生的内部重新工作(可以预期)
我问了一个类似的问题 提取代码审查的相关更改 但没有得到满意的答案。我最接近解决方案是做我提到的,创建一个临时分支,然后挑选有趣的提交到临时分支。如果它们结合得很干净,那么可以立即检查整个三角洲。如果他们没有干净地结合并依赖于另一个无关的变化,也许这意味着无论如何都应该立即审查整个批次。
即使这个问题已经过去了,我实际上今天写了一个脚本:
#!/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到rev2.log 转2到rev3.log REV3到rev4.log
您没有指定是否要根据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(尽管原帖从未提及操作系统)