Python 使用哈德逊河中的实际支管封头修订号

Python 使用哈德逊河中的实际支管封头修订号,python,svn,jenkins,hudson,Python,Svn,Jenkins,Hudson,我们在SVN中有多个分支,并使用Hudson CI作业来维护构建。我们使用SVN修订号作为应用程序版本号的一部分。问题是,当哈德逊公司的工作检查一个分支机构的负责人时,它得到的是SVN的负责人编号,而不是该分支机构的最后一次承诺修订。我知道,SVN在全球范围内维护版本号,但我们希望在我们的版本中反映特定分支的最后承诺数量 有没有一种方法可以使用python脚本获取brach最后提交的修订号,以便我可以使用该修订号签出该分支? 如果哈德逊河本身有办法做到这一点,那就更好了 谢谢 使用python获

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

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


谢谢

使用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_修订版
)。请记住,签出“上次更改版本”和标题版本之间没有区别——它们都指的是分支中相同的内容


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

使用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_修订版
)。请记住,签出“上次更改版本”和标题版本之间没有区别——它们都指的是分支中相同的内容


你可能想考虑为你的每一个分支使用新的工作。这样,触发构建的提交将是“最后更改的版本”(除非您自己触发)。您可以通过克隆中继作业并更改存储库url手动执行此操作,或者您可以使用类似于自动执行的工具。

除了
svn info
之外,您还可以使用
svn log-q-l1url
svn ls-v--depth empty URL
除了
svn info
之外,您还可以使用
svn log-q-l1url
svn ls-v--depth empty URL
,svn info命令身份验证失败!有没有办法用这个来提供信用卡?而且,我尝试使用pysvn模块(它得到了creds的回调),但无法获得分支的最后提交信息。顺便说一句,这个python脚本将在不同的分支中执行,而不是在我试图获取修订信息的分支的工作目录中执行。谢谢,@user1366786,我已经更新了答案。在我看来,每个分支的工作方法可能正是你想要的。谢谢你。成功了。是的,每个分支和触发器使用不同的作业。我们有这个问题,因为我们的作业是用默认的HEAD.gvalkov参数化的svn修订号,svn info命令的身份验证失败!有没有办法用这个来提供信用卡?而且,我尝试使用pysvn模块(它得到了creds的回调),但无法获得分支的最后提交信息。顺便说一句,这个python脚本将在不同的分支中执行,而不是在我试图获取修订信息的分支的工作目录中执行。谢谢,@user1366786,我已经更新了答案。在我看来,每个分支的工作方法可能正是你想要的。谢谢你。成功了。是的,每个分支和触发器使用不同的作业。我们有这个问题,因为我们的作业是用默认头参数化的svn修订号。