我们在SVN中有多个分支,并使用Hudson CI作业来维护我们的构建。我们使用SVN修订号作为我们的应用程序版本号的一部分。问题是,当一个Hudson工作检查出一个brach的HEAD时,它正在获得SVN的HEAD号码,而不是最后提交的那个brach的修订版。我知道,SVN在全球范围内保留了修订号,但是我们希望在我们的版本中反映最后提交的特定数字。
有没有办法使用python脚本获取brach的最后一个提交的修订号,以便我可以使用该修订号检查该分支? 或者更好,如果有办法在哈德森本身做到这一点?
感谢。
答案 0 :(得分:1)
使用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
和SVN_REVISION
)。请注意,查看“最后更改的版本”和“最后修改版本”之间没有任何区别。和HEAD修订版 - 它们都引用了分支中的相同内容。
您可能需要考虑为每个分支使用新作业。这样,触发构建的提交将是“最后更改的Rev”。 (除非你自己触发它)。您可以通过克隆中继作业和更改存储库URL来手动执行此操作,也可以使用jenkins-autojobs之类的工具自动执行此操作。
答案 1 :(得分:0)
除svn info
以外,您还可以使用svn log -q -l 1 URL
或svn ls -v --depth empty URL