2013-04-26 42 views
1

我們在SVN中有多個分支並使用Hudson CI作業來維護我們的構建。我們使用SVN修訂版號作爲我們應用程序版本號的一部分。問題是,當Hudson的工作檢查出一個brach的HEAD時,SVN的HEAD數字沒有被最後提交修訂那個brach。我知道,SVN維護全球版本號,但我們想要反映我們版本中最後承諾的特定版本號。在Hudson中使用實際分支頭修訂號

有沒有辦法讓使用python腳本BRACH的最後提交的版本號碼,以便我可以使用該版本號籤一個分支? 或更好,如果有辦法在哈德森本身做到這一點?

謝謝。

回答

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) 

我不認爲顛覆SCM插件可以給你你需要(其出口僅SVN_URLSVN_REVISION)的信息。請記住,檢查「Last changed Rev」和HEAD修訂版之間沒有區別 - 它們都指分支中的相同內容。

你可能要考慮使用一個新的工作對你有每一個分支。這樣,觸發構建的提交將是'Last changed Rev'(除非你自己觸發它)。您可以通過克隆中繼作業並更改存儲庫網址來手動執行此操作,也可以使用類似jenkins-autojobs的工具自動執行此操作。

+0

gvalkov, 當svn info命令失敗的認證!有沒有辦法爲此提供信用? 此外,我試圖使用pysvn模塊(它得到了回報的信譽),但無法獲得我的分支最後提交的信息。 順便說一下,這個python腳本將在不同的brach中執行,而不是在我嘗試獲取修訂信息的分支的工作目錄中執行。 謝謝 – user1366786 2013-04-27 01:32:38

+0

嗨,@ user1366786,我已經更新了答案。它真的在我看來,每個分支機構的做法可能是你要找的。 – gvalkov 2013-04-27 08:07:09

+0

謝謝gvalkov。有效。 是的,我們每個分支使用不同的工作,也觸發。我們有這個問題,因爲我們的作業是使用默認HEAD參數化的svn版本號。 – user1366786 2013-04-27 17:35:07

0

除了svn info你也可以使用svn log -q -l 1 URLsvn ls -v --depth empty URL