我怎样才能让SVN列出所有曾经提交到存储库的文件(如果可能的话,还有位置和版本)。
更确切地说:我需要所有曾存在的路径。
如果有人知道如何在整个存储库中进行全文搜索(包括所有修订版),这将有助于我做得更好。
假设我提交了一个文件SomeFileOne.txt
,稍后将其重命名为SomeFileTwo.txt
。
执行完所需任务(我正在寻找哪种解决方案)后,我不仅应该SomeFileTwo.txt
,还应该SomeFileOne.txt
。
...
/trunk/SomeProject/SomeFileOne.txt - revision 100
/trunk/SomeProject/SomeFileTwo.txt - revision 101
...
答案 0 :(得分:3)
通过玩耍找到了一些东西。
缓慢而肮脏的解决方案可能是:
svnadmin dump MY_REPO | grep Node-path
输出如下:
* Dumped revision 3039.
Node-path: trunk/proj1/src/p/keywords/main/NoOp.java
Node-path: trunk/proj1/src/p/keywords/main/ScopeDecl.java
* Dumped revision 3040.
Node-path: trunk/myCommons/src/i/IConverter.java
Node-path: trunk/myCommons/src/i/ListUtils.java
* Dumped revision 3041.
Node-path: trunk/proj1/src/p/execution/impl/IterativeExecuter.java
Node-path: trunk/proj1/src/p/keywords/DeclConstant.java
好吧,至少它解决了我的问题。
注意:显示Dumped revision ...
,因为它是stderr
。
答案 1 :(得分:3)
对于svn log -v的改进的结构化输出,请使用以下bash脚本:
$ svn log -v | egrep '^ A' | cut -c 6- | sort | uniq
说明:
这也适用于结帐的子路径,如果您提供存储库路径,则根本不需要结帐:
$ svn log -v https://github.com/schacon/kidgloves/ | egrep '^ A' | cut -c 6- | sort | uniq
结果:
/branches
/branches/testing (from /trunk:17)
/trunk
/trunk/README
/trunk/example.rb
/trunk/kidgloves.rb
/trunk/simple_rack.rb
是的,文件列表可能不适合自动处理,但如果我可以这么说,它只是从日志输出中走了很长一段路。享受。
答案 2 :(得分:2)
对我来说,svn log -v本来是一种更直观的方法 - 或者你已经尝试过了吗?是否有可能分享对存储库中所有文件提交要求如此广泛报告的需求?
答案 3 :(得分:0)
如果您只是想浏览一下,您可以通过其中一个svn Web访问工具获得您想要的内容。综述为written up over here.