我希望获得最新的SVN版本,其中给定文件的内容发生了变化。我要这个 信息,无论文件是否已被移动或复制。我希望得到这个修订版,将其与上次审核的#34;进行比较。从我的同行评审系统修订。
对于大多数文件,svn info
将提供" Last Changed Rev"与期望的
修订。这也适用于标签和分支,只要标签或
branch是通过复制整个目录创建的。
但是某些文件已被复制或重命名,而不是使用完整的目录副本。上
即使文件内容没有发生任何变化,这些文件仍然是" Last Changed
转"来自svn info
反映了复制或重命名发生的修订。
与svn diff
或svn log
不同,我没有看到任何允许的命令行标志
跟随历史。
我想提取svn info
显示的修订文字并使用svn log -v
在它上面,获取重命名或复制的文件的副本路径。然后我
可以在"来自"上使用svn info
路径和修改一如既往。
但是,据我所知,svn log
没有显示何时复制文件
也在同一次提交中修改。未修改的日志看起来相同
复制历史记录,以及也修改过的历史记录副本。
svn diff --notice-ancestry
可以显示副本期间发生的更改。
所以我可以使用它来显示复制过程中是否发生了任何变化。
svn log --diff
遗憾地不支持--notice-ancestry
,因此这是第3个
命令使用。
总结一下,我想出了以下程序 会有效,但我的口味很复杂:
1. `svn info` to find last changed revision for each file
2. `svn log -v -r` on that revision of that file to see what changed
a. If change was a modification, this is the revision I want
b. If change was an "add" action with no "from", this is the revision I want
c. If change was an "add" action with a "from", continue to step (3)
3. `svn diff -c` on the same revision found in (1)
a. if there are no differences, start over at step (1) using the "from" path
and revision found in (2c)
b. if there are differences, this is the revision I want
有更简单的方法吗?这将需要相当复杂 脚本来完成什么直觉应该是一个非常简单的任务。