我有两个修订版 r1 和 r2。r1 向不同的文件添加了不同的行(并且也进行了其他修改)。r2 从一些文件中删除了 r1 引入的一些行。有什么方法可以获取 r2 删除了 r1 引入的行的那些文件的列表?
问问题
787 次
3 回答
1
是的。
svn diff
为您提供两个修订版之间的统一差异。使用该--summarize
标志仅列出文件名。
因此,svn diff -rR1:R2 --summarize
将列出修订版R1
和R2
.
现在,对于每个文件,您可以使用 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
于 2013-11-20T12:16:47.537 回答