Shell 获取Subversion中最后N次提交的文件列表

Shell 获取Subversion中最后N次提交的文件列表,shell,svn,version-control,Shell,Svn,Version Control,是否可以获取Subversion中最后N次提交的文件列表 我想为Subversion存储库中的文件运行图像优化任务,但我不想运行整个文件。要获取最后N次提交,请使用--limit或-l标志来svn log。或者,您也可以按修订号和/或日期限制日志条目 要更改文件,需要使用-v(或--verbose)标志 要抑制日志文本,需要使用-q(或--quiet)标志 总而言之,要获得(例如)自2014年5月初以来更改的所有文件(以易于解析的格式),您可以执行以下操作: svn log --quiet --

是否可以获取Subversion中最后N次提交的文件列表


我想为Subversion存储库中的文件运行图像优化任务,但我不想运行整个文件。

要获取最后N次提交,请使用
--limit
-l
标志来
svn log
。或者,您也可以按修订号和/或日期限制日志条目

要更改文件,需要使用
-v
(或
--verbose
)标志

要抑制日志文本,需要使用
-q
(或
--quiet
)标志

总而言之,要获得(例如)自2014年5月初以来更改的所有文件(以易于解析的格式),您可以执行以下操作:

svn log --quiet --verbose --revision {2014-05-01}:HEAD
svn log -q -v -r {2014-05-01}:HEAD
或者获取过去10次提交的相同信息,无论何时提交:

svn log --quiet --verbose --limit 10
svn log -q -v -l 10

没有简单、单一的Subversion命令可以提供这些信息

这里有一些未解决的问题:

  • 您是指您所在目录(项目)的最后几次修订,还是指整个存储库的最后几次修订。如果你说的是整个回购协议,你可以得到最新版本,然后减去你想要的数字。如果你谈论的是单个项目,它会变得更加困难

  • 我想你想要一个不包含重复项的列表

  • 添加或删除的文件如何?你想怎么数
这并不像看上去那么难,但你必须自己编写脚本才能做到这一点。
svn日志
接受一个
--xml
参数,并将以xml格式返回日志。格式如下所示:

$ svn log -v --xml $REPO

<?xml version="1.0" encoding="UTF-8"?>
<log>
<logentry
    revision=...>
<author>...</author>
<date>...</date>
<paths>
<path
   ....
   ....
   action=".">...name of file...</path>
<path ...
</paths>
<msg>.....</msg>
</logentry>
<logentry
   ....
   ....
$svn log-v--xml$REPO
...
...
…文件名。。。
您将问题标记为“shell”,因此您可能不在Windows上,但如果您不在Windows上,您几乎可以在PowerShell的一行中执行任何操作(将此配方中的“99”替换为“n”):


您可以在my中看到Get SvnLog的API,其中包括20多个您可以获得的其他报告示例。打开PowerShell“书”并转到SvnTools。下载代码。

可能的重复而不是重复,因为该问题询问的是最近的几个日志条目。这个问题不关心日志条目,只关心那些日志条目中更改的文件。我不知道
--xml
参数,但有了Ben和你的答案,我找到了解决问题的方法。谢谢。“我不知道如何获得最后N次提交”-OMFG!!!RTFM
svn帮助日志
-l
选项正确!真尴尬。您可以知道我在SVN中访问命令行的频率。我正在用这些信息编辑帖子!
PS> Get-SvnLog |
Select -First 99 -ExpandProperty Paths |
% { ([xml]$_).SelectNodes("//path/text()").Value } |
Sort -Unique