使用SVN自特定日期以来未更改的文件列表

时间:2016-02-15 11:26:08

标签: svn

我正在管理一个由许多人开发的软件包。但是,可能不再需要包装的某些部分,并且可能会将其移除。如果长时间没有发生变化,那么这是一个很好的指标。 [你必须相信我这一点。我所处的合作有很奇怪的工作习惯......]

如何找出SVN回购中哪些文件在某个时间段内发生变化?

我发现了这个问题,它描述了我的问题的反面: List of files changed since a certain date using SVN

但是,我不清楚如何使用解决问题的答案。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

你有一些选择

  1. 获取svn info file,从输出中提取修订版。如果文件修订版<< repostory revision,那么这个文件太旧了
  2. 获取svn info --xml并解析文件/文件夹修订的xml结果
  3. 使用svn checkout选项执行use-commit-times并在工作副本中搜索旧文件

答案 1 :(得分:0)

如果你有grep(你甚至必须在Windows上使用grep),你可以

  • 获取文件FILE中已更改路径的列表(请参阅链接答案)
  • 将repo中所有文件的管道列表导入特殊的grep:svn ls -R | grep -v -f FILE(TBT !!!我现在还没有grep在手中)
      WC根目录中的
    • svn ls -R输出完整的树
    • grep -f使用模式从文件搜索(每行一行),-v反向结果,即我期望在ls的输出字符串中,在FILE中找不到,因为它是被请求的

答案 2 :(得分:0)

首先,获取最近更改过的文件/文件夹的列表唯一列表。转到工作副本的根目录并执行

 svn log <url> -qv -r {startdate}:{enddate} | grep "^ " | awk '{print $2}' | sort -u | cut -c<N>- > changed.txt

请注意,此命令假定您的文件名中没有空格。如果有空格,则需要将awk命令替换为更复杂的命令。应选择<N>命令中的整数cut,使changed.txt中的所有路径都相对于当前目录。

然后,获取所有当前存在的文件的类似列表:

find . -type f -not -path "*/.svn*" | sort -u  | cut -c3- > current.txt

最后,获取最近未更改的当前现有文件列表(即current.txt但不在changed.txt中的文件):

comm -23 current.txt changed.txt