獲取使用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)
我不認爲顛覆SCM插件可以給你你需要(其出口僅SVN_URL
和SVN_REVISION
)的信息。請記住,檢查「Last changed Rev」和HEAD修訂版之間沒有區別 - 它們都指分支中的相同內容。
你可能要考慮使用一個新的工作對你有每一個分支。這樣,觸發構建的提交將是'Last changed Rev'(除非你自己觸發它)。您可以通過克隆中繼作業並更改存儲庫網址來手動執行此操作,也可以使用類似jenkins-autojobs的工具自動執行此操作。
gvalkov, 當svn info命令失敗的認證!有沒有辦法爲此提供信用? 此外,我試圖使用pysvn模塊(它得到了回報的信譽),但無法獲得我的分支最後提交的信息。 順便說一下,這個python腳本將在不同的brach中執行,而不是在我嘗試獲取修訂信息的分支的工作目錄中執行。 謝謝 – user1366786 2013-04-27 01:32:38
嗨,@ user1366786,我已經更新了答案。它真的在我看來,每個分支機構的做法可能是你要找的。 – gvalkov 2013-04-27 08:07:09
謝謝gvalkov。有效。 是的,我們每個分支使用不同的工作,也觸發。我們有這個問題,因爲我們的作業是使用默認HEAD參數化的svn版本號。 – user1366786 2013-04-27 17:35:07