1

我有两个修订版 r1 和 r2。r1 向不同的文件添加了不同的行(并且也进行了其他修改)。r2 从一些文件中删除了 r1 引入的一些行。有什么方法可以获取 r2 删除了 r1 引入的行的那些文件的列表?

4

3 回答 3

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参数还告诉它打印差异中受影响更改的行号。这与原始文件中的行号不同,但在同一个邻居中。

于 2013-11-20T12:21:20.043 回答
0

你试过用svn diff吗?

于 2013-11-20T12:13:24.710 回答
0

如果要更改文件列表,则要svn log--verbose标志一起使用

svn手册

例如:

svn log -v http://myrepo/files
于 2013-11-20T12:16:47.537 回答