显示两个修订版之间已删除行的列表

时间:2013-11-20 12:08:39

标签: svn comparison diff revisions

我有两个版本r1和r2。 r1为不同的文件添加了不同的行(并进行了其他修改)。 r2删除了某些文件中r1引入的一些行。有没有办法得到r1删除行的那些文件的列表?

3 个答案:

答案 0 :(得分:1)

svn diff为您提供两个修订版之间的统一差异。使用--summarize标志仅列出文件名。

因此,svn diff -rR1:R2 --summarize会在修订版R1R2之间列出所有受影响的文件。

现在,对于每个文件,您可以使用grep通过搜索"^-"来获取已删除行的列表(即:以-字符开头的行。)

总体命令是:

R1="your first revision value"
R2="your second revision value"
for i in $(svn diff -r${R1}:${R2} --summarize | cut -c9-)
do
   echo "Listing lines deleted between revisions ${R1} and ${R2} in file:${i}"
   echo "===================================================================="
   svn diff -r${R1}:${R2} ${i} | grep -in "^-"
   echo "===================================================================="
done

cut命令用于从svn -diff --summarize的输出中删除前导状态标志和空格,而grep命令用于搜索修订版之间标记为已删除的行。 grep的-n参数也告诉它打印diff中受影响的更改的行号。这与原始文件中的行号不同,但它位于同一邻域中。

答案 1 :(得分:0)

您是否尝试过使用svn diff

答案 2 :(得分:0)

如果您想要更改文件列表,您希望svn log使用--verbose标记

svn manual

例如:

svn log -v http://myrepo/files