如何 svn 注释/责备已删除的文件?
How to svn annotate / blame a deleted file?
设置: 我存储库中的文件 foo/bar
被复制(经过修改)到 foo/baz
,原始文件在 r123 中被删除。此复制是手动执行的,而不是 svn cp
。此后经过多次修订。
我现在想看看 foo/baz
中的某些行是从哪里来的。回溯到 foo/bar
后,我尝试了这个命令:
$ svn annotate foo/bar -r 122
svn: warning: W155010: The node '/path/to/checkout/foo/bar' was not found.
svn: E200009: Could not perform blame on all targets because some targets don't exist
...但它不起作用,因为该文件不再存在!
问题:我如何svn annotate
一个已被删除的文件?
确定文件存在的最后修订后,您需要使用不同形式的 svn annotate
命令并查看 SVN 服务器上的历史记录。首先,运行svn info
获取当前目录的服务器URL:
$ svn info
[...]
URL: https://you@wherever.com/svn/project/subproject/trunk
Relative URL: ^/subproject/trunk
[...]
远程版本可以命名为url/path@revision
,如下:
$ svn annotate https://you@wherever.com/svn/project/subproject/trunk/foo/bar@122
或
$ svn annotate ^/subproject/trunk/foo/bar@122
编辑:感谢 Patryk Obara 指出可以使用相对 URL。
Richard 的回答没问题,但你不需要知道完整的 svn url - ^
character always expands to project url:
svn annotate ^/<branch path>/<file path>@rev
例如
svn annotate ^/trunk/README.md@123
设置: 我存储库中的文件 foo/bar
被复制(经过修改)到 foo/baz
,原始文件在 r123 中被删除。此复制是手动执行的,而不是 svn cp
。此后经过多次修订。
我现在想看看 foo/baz
中的某些行是从哪里来的。回溯到 foo/bar
后,我尝试了这个命令:
$ svn annotate foo/bar -r 122
svn: warning: W155010: The node '/path/to/checkout/foo/bar' was not found.
svn: E200009: Could not perform blame on all targets because some targets don't exist
...但它不起作用,因为该文件不再存在!
问题:我如何svn annotate
一个已被删除的文件?
确定文件存在的最后修订后,您需要使用不同形式的 svn annotate
命令并查看 SVN 服务器上的历史记录。首先,运行svn info
获取当前目录的服务器URL:
$ svn info
[...]
URL: https://you@wherever.com/svn/project/subproject/trunk
Relative URL: ^/subproject/trunk
[...]
远程版本可以命名为url/path@revision
,如下:
$ svn annotate https://you@wherever.com/svn/project/subproject/trunk/foo/bar@122
或
$ svn annotate ^/subproject/trunk/foo/bar@122
编辑:感谢 Patryk Obara 指出可以使用相对 URL。
Richard 的回答没问题,但你不需要知道完整的 svn url - ^
character always expands to project url:
svn annotate ^/<branch path>/<file path>@rev
例如
svn annotate ^/trunk/README.md@123