在Subversion中,如果我使用svn move foo.py bar.py
移动文件,那么svn status
会帮助我显示文件从何处移出
$ svn move foo.py bar.py
$ svn status
A + bar.py
> moved from foo.py
如果我进行复制,则输出不会显示新文件的复制来源:
$ svn copy foo.py bar.py
$ svn status
A + bar.py
有什么方法可以找到从哪里复制bar.py。如果我修改bar.py
,svn diff
会显示相对于原始foo.py
的更改,但是不幸的是,标头错误地将原始文件路径显示为bar.py
,而某些版本没有已存在于仓库中。
Index: bar.py
===================================================================
--- bar.py (revision 14283)
+++ bar.py (working copy)
@@ -1,15 +1,14 @@
....
我需要产生差异以发送到我的代码审查工具,但由于bar.py
在差异所要求的版本库中不存在onPlayerError
,所以它感到不高兴。
答案 0 :(得分:0)
svn log
命令具有一个verbose
选项。这还将打印从中复制文件的路径。
http://svnbook.red-bean.com/en/1.8/svn.ref.svn.c.log.html
答案 1 :(得分:0)
如果我正确理解您的代码查看工具,则仅吸收差异。您需要工具了解两个操作,即复制和编辑。简单的svn diff
仅报告编辑内容,而不报告副本。
以下是解决问题的三种可能方法。我无法测试您的工具,因此无法判断是否可以使用,但是值得一试:
使用:svn diff --show-copies-as-adds
。这会将文件的先前版本显示为不存在。比较(file4是svn复制和编辑的文件):
[843] >>> svn diff
Index: file4
===================================================================
--- file4 (revision 5)
+++ file4 (working copy)
@@ -1 +1,2 @@
some text
+more more
使用
[844] >>> svn diff --show-copies-as-adds
Index: file4
===================================================================
--- file4 (nonexistent)
+++ file4 (working copy)
@@ -0,0 +1,2 @@
+some text
+more more
提交,然后svn diff -r PREV
(之后您始终可以回滚提交)。您将得到相同的结果:
[845] >>> svn ci -m "copied and edited"
Adding file4
Transmitting file data .done
Committing transaction...
Committed revision 6.
[846] >>> svn up
Updating '.':
At revision 6.
[847] >>> svn diff -r PREV
Index: file4
===================================================================
--- file4 (nonexistent)
+++ file4 (revision 6)
@@ -0,0 +1,2 @@
+some text
+more more
分两步将您的工作流程分开。在编辑之前,首先提交文件的副本。然后进行编辑。