当前位置:  开发笔记 > 编程语言 > 正文

获取SVN中的最新修订号?

如何解决《获取SVN中的最新修订号?》经验,为你挑选了9个好方法。

使用PHP,Perl或Python(最好是PHP),我需要一种方法来查询SVN数据库并找出发送给SVN的最新修订号.除此之外我不需要任何其他东西.它需要是非密集型的(所以我每隔5分钟就做一次cron工作; SVN的性能不应该受到影响).

SVN位于我的Intranet上,但不是我的特定计算机.

我安装了SVN,但没有为PHP/Perl/Python安装绑定.我正在运行Windows XP,但我更喜欢独立于平台的解决方案,它也适用于Linux.如果您有一个仅限Linux(或仅限XP)的解决方案,那也会有所帮助.



1> sth..:

如果你想分析一个本地工作副本,那么最好的工具是svnversionSubversion附带的,并产生类似的输出968:1000M.文件说:

如果工作副本是单个修订版,未修改,未切换且具有与TRAIL_URL参数匹配的URL,则版本号将是单个数字.如果工作副本不正常,版本号将更复杂:

4123:4168     mixed revision working copy
4168M         modified working copy
4123S         switched working copy
4123:4168MS   mixed revision, modified, switched working copy


svnversion用于本地工作副本,并且不会按照问题中的指定访问Intranet上的存储库.
对于那些不熟悉svnversion的人来说,它是标准命令行客户端的一部分,这里是手册页:http://svnbook.red-bean.com/nightly/en/svn.ref.svnversion.re.html.
同意,比svn信息好多了

2> Daniel X Moo..:
$output
"; ?>

您可以像这样获取XML输出:

$output = `svn info $url --xml`;

如果有错误,则输出将被定向到stderr.要在输出中捕获stderr,请使用:

$output = `svn info $url 2>&1`;


`svn info $ url | grep'Last Changed Rev'| awk'{print $ 4; }'`
@Cobra_Fast,你不需要管道,你可以做`svn info --show-item revision $ url`或`svn info --show-item last-changed-revision $ url`.
谢谢!我使用--xml来构建自己的C#工具,帮助我生成AssemblyFileVersion属性.PS:英语不是我的主要语言,我对以前从未听过的"因此"这个词感到困惑.顺便说一下,它的起源很有趣:cf(http://en.wiktionary.org/wiki/thusly); 你是故意使用它(双关语?)还是你通常使用而不是这样?
如果有错误,则输出将被定向到stderr.要在输出中捕获stderr,请使用:$ output =`svn info $ url 2>&1`;
@ cp.engr我相信这只是自SVN v1.9左右以来 - 我在v1.9.5中有它并且它在v1.8.6中不存在

3> Nick Haddad..:

svn info -r HEAD

这将为您提供存储库头部的最新版本号.

有一些很好的博客文章关于将subversion数字集成到您的构建脚本中:

在Ant中进行Subversion修订

在Xcode中自动构建子版本



4> Blorgbeard..:

这应该在Bash中从工作目录中工作.我在安装了unixutils的 Windows中使用它:

svn info |grep Revision: |cut -c11-


传递分隔符而不是字符数最适合本地化内容,例如`svn info | grep修订版| cut -d"" - f 2`将在使用空格分割后返回第二个字符串.
此外,这不适用于SVN的本地化版本(在波兰语中,这应该是| cut -c9-).
也就是说,顺便说一句,我强烈不喜欢本地化命令行开发人员工具的原因; 零利益,一堆问题.我通常会出于这个原因删除本地化.

5> Magentus..:

以下应该有效:

svnlook youngest 

它返回一个修订号.



6> derFunk..:

要在远程存储库中获得最新版本("头部修订版")编号,请使用以下命令:

svn info -r 'HEAD' | grep Revision | egrep -o "[0-9]+"

输出例如:

35669



7> sdaau..:

获取最新修订号的说明:

说我已经cd修改了子目录(MyProjectDir).然后,如果我打电话svnversion:

$ svnversion .
323:340

......我得到了" 323:340",我猜这意味着:" 你们这里有物品,从修订版323到340 ".

 

然后,如果我打电话svn info:

$ svn info
Path: .
URL: svn+ssh://server.com/path/to/MyProject/MyProjectDir
Repository Root: svn+ssh://server.com/path/to/MyProject
Repository UUID: 0000ffff-ffff-...
Revision: 323
Node Kind: directory
Schedule: normal
Last Changed Author: USER
Last Changed Rev: 323
Last Changed Date: 2011-11-09 18:34:34 +0000 (Wed, 09 Nov 2011)

...我得到" 323"作为修订版 - 这实际上是报告者的最低版本svnversion!

 

然后我们可以svn info在递归模式下使用从本地目录获取更多信息:

> svn info -R | grep 'Path\|Revision'
Path: .
Revision: 323
Path: file1.txt
Revision: 333
Path: file2.txt
Revision: 327
Path: file3.txt
Revision: 323
Path: subdirA
Revision: 328
Path: subdirA/file1.txt
Revision: 339
Path: subdirA/file1.txt
Revision: 340
Path: file1.txt
Revision: 323
...

...(删除grep以查看更多详细信息).

 

最后,当我们想要检查在线存储库的最新版本(在本例中为@ server.com)时该怎么办?然后我们再次发布svn info,但是-r HEAD(注意-R之前的资本选项和-r现在的小写)之间的区别:

> svn info -r 'HEAD'
USER@server.com's password:
Path: MyProjectDir
URL: svn+ssh://server.com/path/to/MyProject/MyProjectDir
Repository Root: svn+ssh://server.com/path/to/MyProject
Repository UUID: 0000ffff-ffff-...
Revision: 340
Node Kind: directory
Last Changed Author: USER
Last Changed Rev: 340
Last Changed Date: 2011-11-11 01:53:50 +0000 (Fri, 11 Nov 2011)

有趣的是 - svn info仍然引用当前的子目录(MyProjectDir),但是,在线路径报告为MyProjectDir(.与本地案例相对) - 并且报告的在线修订是最高的(340- 与最低的323报告相对,报告本地).



8> bahrep..:

从Subversion 1.9开始,您可以使用选项--show-item来获取svn info命令输出字段之一的值.此命令仅显示修订号:

svn info --show-item=revision 

使用--xml选项获取svn info的XMLed输出,并使用PowerShell获取修订号.这是一个简单的例子:

[xml]$svninfo = svn info  --xml -r HEAD
$latestrevnum = $svninfo.info.entry.revision
$latestrevnum

使用VisualSVN Server 3.4或更高版本,您可以通过运行以下命令获取存储库中的修订数:

$repo = Get-SvnRepository

$repo.Revisions

有关更多信息,请参阅Get-SvnRepositoryPowerShell cmdlet参考.



9> Tim..:

我想你在找

svn info -r HEAD

你可以支持那个命令吗?

您可能还需要提供存储库的登录凭据.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有