如何在SVN的两个版本之间获得所有更改的文件?

如何在SVN的两个版本之间获得所有更改的文件?,svn,tortoisesvn,Svn,Tortoisesvn,假设我在SVN中有两个修订版:修订版140和修订版185。我修改/签入了大约100个文件。现在我想得到所有文件的列表,这些文件已从140版更改为185版 如果比较140版和185版,我只会得到在这两个版本中更改/修改的文件列表,而不是在所有版本中。您可以做的是 svn diff -r 140:185 --summarize 这在shell中工作,但我不知道。您可以做的是 svn diff -r 140:185 --summarize 这在shell中工作,但我不知道。由@pfnuesel给出

假设我在SVN中有两个修订版:修订版140和修订版185。我修改/签入了大约100个文件。现在我想得到所有文件的列表,这些文件已从140版更改为185版

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

您可以做的是

svn diff -r 140:185 --summarize
这在shell中工作,但我不知道。

您可以做的是

svn diff -r 140:185 --summarize

这在shell中工作,但我不知道。

由@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

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

由@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

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

它只给出了两个版本之间的差异,而不是所有在这两个版本之间更改的文件。也许我误解了您想要实现的目标。在使用我的代码段时,您能否更新您的问题并概述哪些不起作用?我必须为每个版本运行此命令。首先是140:141,然后是141:142…184:185,以获取所有已更改文件的列表,然后通过进入记事本++获取其唯一文件。没有一个命令可以一次完成吗?我刚试过,它对我来说正是你想要的方式。你在重复计算你在两个版本之间多次更改的文件。这只会在两个版本之间产生差异,而不是在两个版本之间更改的所有文件。也许我误解了你想要实现的目标。在使用我的代码段时,您能否更新您的问题并概述哪些不起作用?我必须为每个版本运行此命令。首先是140:141,然后是141:142…184:185,以获取所有已更改文件的列表,然后通过进入记事本++获取其唯一文件。没有一个命令可以一次完成它吗?我刚刚试过,它对我来说正是你想要的方式。你在重复计算你在两次修订之间多次更改的文件。