如何 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