我正在设置一个连续集成作业,用于修补外部库并在本地发布修补版本。查找最新的SVN标签
但是,外部库使用TRUNK进行开发,并且我希望自己的CI作业能够自动选择结帐的最新版本标签。
SVN是否具有该功能?
(bash外壳脚本是OK)
我正在设置一个连续集成作业,用于修补外部库并在本地发布修补版本。查找最新的SVN标签
但是,外部库使用TRUNK进行开发,并且我希望自己的CI作业能够自动选择结帐的最新版本标签。
SVN是否具有该功能?
(bash外壳脚本是OK)
嗯.. 。关于以下内容:
svn log URL/tags --limit 1
将打印出最后一个标签。
很好,谢谢(+1) – 2011-03-09 12:20:34
SVN没有标签的定义。我假设你的意思是修订。符号修订版HEAD指向树的最新版本。
例如 svn export -rHEAD ...
我知道没有一个标签的真正定义,但我的意思是伪标签thingies在'trunk'旁边的'tags'中 – 2011-03-09 10:42:17
这将工作,如果没有更好的可以发现:
svn log -v <tagsurl> | awk '/^ A/ { print $2 }' | grep -v RC | head -1
(grep的-v RC部分条候选发布版)
这对我更好,因为我需要标签URL而不是信息。 – Bart 2012-06-13 14:45:27
使用--limit 1和log -v以节省时间以获取最新的标签。 'svn log -v
for Windows,您可以使用PowerShell:
$path = (([Xml] (svn log --xml $Url --verbose --username $Username --password $Password)).Log.LogEntry.Paths.Path |
? { $_.action -eq 'A' -and $_.kind -eq 'dir' -and $_.InnerText -like '*tags*'} |
Select -Property @(
@{N='date'; E={$_.ParentNode.ParentNode.Date}},
@{N='path'; E={$_.InnerText}})|
Sort Date -Descending |
Select -First 1).path
其中$链接你的标签
的URL这是一个更通用的解决方案。有时候,我们不仅需要最新的标签,但最新的标签,它尊重这样一个规律:
last_tag=$(svn ls http://svn_rep/XXX/tags/ | egrep '^MySpecialProject_V([0-9].)+[0-9]+[a-zA-Z_0-9]*' | sort --reverse | head -1 2>&1)
在这里,我们将其名称由MySpecialProject_V启动项目的最新标签。 如果我们有这些标签:
Koko_V3.1.0.0
MySpecialProject_V1.1.0.0
MySpecialProject_V1.2.0.0
MySpecialProject_V2.1.0.0
MySpecialProject_V2.2.0.0
结果:
echo $last_tag
...应该是:
MySpecialProject_V2.2.0.0
我希望这会帮助别人。
刚发现这个类似的问题:http://serverfault.com/questions/68139/get-latest-tag-from-subversion – 2011-03-09 10:32:11