如何在SVN中的两个修订版之间获取所有已更改的文件?

时间:2013-12-16 10:10:13

标签: svn tortoisesvn

假设我在SVN中有2个修订:修订版140和修订版185.我修改/签入了大约100个文件。现在我想获取已从版本140更改为185的所有文件的列表。

如果我比较修订版140和185,我将只获得在这两个版本中更改/修改的文件列表,而不是在所有版本中。

2 个答案:

答案 0 :(得分:4)

你能做的是

svn diff -r 140:185 --summarize

这适用于shell,但我不知道

答案 1 :(得分:3)

@pfnuesel给出的答案是正确的 - 人们不能比这更简洁!我只是在您可能希望进一步挖掘数据的情况下提供此功能。由于你标记了TortoiseSVN这个问题,你大概是在Windows上,因此可以访问PowerShell。我写了一小套工具来分析Subversion元数据,特别是我的Get-SvnLog cmdlet。

@ pfnuesel答案的(近似)等价是:

Get-SvnLog -ByFile -RevisionRange 140:185 | % { $_.path } | Sort-Object -Unique

但是当你明白它将SVN元数据转换为对象时,Get-SvnLog的力量就会出现。例如,此命令将列出每个文件的所有属性:

 Get-SvnLog -ByFile -RevisionRange 140:185 | Format-Table -auto

获得更多区别对待,这将报告上次触摸的每个文件以及在指定的修订范围内触摸的次数:

Get-SvnLog -ByFile -RevisionRange 140:185 |
group Path | 
select `
    @{ n='Last Touched'; e={@($_.group | sort date -Descending)[0].date} }, `
    @{ n='NumberOfTimesTouched'; e={$_.count} }, `
    name |
sort name |
Format-Table -AutoSize

您可以在我的open source bookshelf中查看Get-SvnLog的API,其中包含其他20个示例。打开PowerShell“book”并转到SvnTools。下载代码here