如何通过repo子目录过滤SVN日志结果?

Mar*_*tta 4 svn

我正在尝试使用SVN日志命令通过一组修订来查找对我的仓库的特定子目录/文件夹中的文件的更改.

这是我到目前为止:

我的repo(主干)的URL是:

http://myserver/svn/repos/myproj/trunk
Run Code Online (Sandbox Code Playgroud)

我只想在repo的DB文件夹(或DB文件夹的任何子文件夹)中找到修改/添加的文件:

http://myserver/svn/repos/myproj/trunk/DB
Run Code Online (Sandbox Code Playgroud)

到目前为止我有这个:

svn log -r 300:351 -q -v --xml http://myserver/svn/repos/myproj/trunk/DB
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我在repo的其他部分,即/ trunk/app文件夹中获取文件.

有没有办法限制结果或我必须做一些后处理?

raz*_*ebe 6

我根据你所描述的内容在这里拍了一个平底船.

我怀疑你看到的路径,其他比你指定的,因为一个这些路径都受这是在相同的修订提交的变化到您指定的路径的动作.

在这种情况下,您需要对XML进行后处理,以便过滤掉您不关心的路径.

示例:执行此命令...

svn log -r 300:351 -q -v --xml http://myserver/svn/repos/myproj/trunk/DB
Run Code Online (Sandbox Code Playgroud)

可能导致输出沿着这条线:

<?xml version="1.0"?>
<log>
<logentry
   revision="351">
<author>razlebe</author>
<date>2010-02-25T14:03:57.912308Z</date>
<paths>
<path
   kind=""
   action="D">/myserver/svn/repos/myproj/trunk/AnotherFolder
</path>
<path
   kind=""
   copyfrom-path="/myserver/svn/repos/myproj/trunk/AnotherFolder"
   copyfrom-rev="350"
   action="A">http://myserver/svn/repos/myproj/trunk/DB/AnotherFolder
</path>
<path
   kind=""
   action="D">http://myserver/svn/repos/myproj/SomethingElse</path>
</paths>
</logentry>
</log>
Run Code Online (Sandbox Code Playgroud)

在此示例中,您将看到<logentry>修订版351 的元素.该修订包括3个操作:

  • 删除文件夹 /myserver/svn/repos/myproj/trunk/AnotherFolder
  • 添加文件夹 http://myserver/svn/repos/myproj/trunk/DB/AnotherFolder
  • 删除文件夹 http://myserver/svn/repos/myproj/SomethingElse

因此,XML输出包含<logentry>for 351修订版,因为该修订版影响了您指定的URL.但是因为该修订版也影响了其他路径,所以这些路径也在XML中描述.

换句话说,<logentry>描述整个修订 ; 而不仅仅是影响您指定的URL的位.