获取SVN存储库修订号

时间:2009-10-26 21:45:52

标签: svn powershell batch-file

是否有一些svnsvnadmin命令会显示本地仓库的修订版?我希望能够拥有一个Windows批处理或PowerShell脚本,它可以让我压缩回购并使用rev to email命名它。

我能想到的最好的方法就是找到[reporoot]\db\revs\0中的最高档,但它看起来很笨重,我不知道它是否可靠。

6 个答案:

答案 0 :(得分:20)

function Get-SvnRevision($dir)
{
  ([xml](svn info $dir --xml)).info.entry.revision
}

PowerShell, Subversion One Liner

答案 1 :(得分:7)

(编辑)svnversion不太好,因为它与工作副本有关,而与存储库无关。

svn info也与工作副本有关。

=> svnlook youngest REPOS_PATH应该这样做。另请参阅svn redbook.

答案 2 :(得分:4)

您还可以使用svn info,其优势在于您无需在工作副本中的某个位置运行它(或提供工作副本的路径) - 您可以将URL传递给repo并显示有关存储库的各种信息,包括最新版本号。相反,svnversion将显示工作副本的最后修订号,但这不需要与存储库的修订版相同。

此外,svn info显示有关存储库的更多详细信息,而不是svnversion。根据您的使用情况,这可能是专业人士或骗子。

答案 3 :(得分:3)

svnversion是你想要的命令。运行svnversion --help以获取输出的说明。

答案 4 :(得分:2)

尝试使用VisualSVN Powershell命令:

Get-Command -Module VisualSVN

Get-SvnRepository将为您提供存储库列表和修订版号。引用位于https://www.visualsvn.com/support/topic/00088/

答案 5 :(得分:0)

以前的响应可能不适用于所有版本的subversion,不确定旧版本的subversion是否支持xml解析输出。可以将“Revision”替换为另一个信息属性。

#this do an info split by new line split by : then get the second parameter where first parameter is equal to Revision
$svnRevision = (svn info "somedirectoryorurl" ) | %{$_ -split '#'} | Where-Object {($_ -split ":")[0] -eq "Revision"} | %{($_ -split ":")[1].Trim()}