使用Hudson中的实际支管头修订号

2024-06-11 07:39:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我们在SVN有多个分支,使用Hudson CI作业来维护我们的构建。我们使用SVN修订号作为应用程序版本号的一部分。问题是,当哈德逊的工作检查出一个分支机构的负责人时,它得到的是SVN的负责人编号,而不是该分支机构的最后一次承诺修订。我知道,SVN在全球范围内维护修订号,但我们希望在我们的版本中反映特定brach最后提交的版本号。在

有没有一种方法可以使用python脚本获取brach的最后一次提交的修订号,这样我就可以使用该修订号签出该分支? 或者更好,如果有办法在哈德逊本身做到这一点?在

谢谢。在


Tags: 方法版本脚本ci应用程序版本号分支作业
2条回答

使用python获取路径的最后一次提交修订:

from subprocess import check_output as run # >=2.7

path = './'
cmd = ['svn', ' username', XXXX, ' password', XXXX, ' non-interactive', 'info', path]
out = run(cmd).splitlines()
out = (i.split(':', 1) for i in out if i)
info = {k:v.strip() for k,v in out}

# you can access  the other svn info fields in a similar manner
rev = info['Last Changed Rev']

with open('.last-svn-commit', 'w') as fh:
    fh.write(rev)

我认为subversion scm插件不能提供您需要的信息(它只导出SVN_URL和{})。请记住,检查“上次更改的版本”和标题修订版之间没有区别-它们都引用了您分支中的相同内容。在

你可以考虑为你的每一个分支使用一个新的工作。这样,触发构建的提交将是“最后更改的版本”(除非您自己触发)。您可以通过克隆主干作业并更改存储库url来手动完成此操作,也可以使用jenkins-autojobs之类的工具自动执行此操作。在

除了svn info之外,您还可以使用svn log -q -l 1 URL或{}

相关问题 更多 >