2013-05-15 106 views
17

基本上我想寫一個python腳本來完成幾件事情,其中​​一個將使用subversion(SVN)在存儲庫上運行一個checkout,也許會再執行一些svn命令。什麼是最好的方法來做到這一點?這將作爲一個crond腳本運行。如何從python腳本運行SVN命令?

+2

您拍照時一看[Python接口Subversion版本(HTTP:// pysvn。 tigris.org/docs/pysvn.html)? –

+0

我不需要它,但謝謝你的提示。 –

回答

18

這項工作?

p = subprocess.Popen("svn info svn://xx.xx.xx.xx/project/trunk | grep \"Revision\" | awk '{print $2}'", stdout=subprocess.PIPE, shell=True) 
(output, err) = p.communicate() 
print "Revision is", output 
+1

這是我正在尋找的答案。謝謝 –

+4

@Ricardo如果你打算使用這種技術,我認爲如果輸出請求爲XML,會更簡單。像'svn info --xml'。這樣的結果將更容易解析和處理。 –

+1

感謝@EdwinDalorzo的領導 –

14

嘗試pysvn

爲您提供一流的訪問,據我測試過它。 下面是一些例子:http://pysvn.tigris.org/docs/pysvn_prog_guide.html

原因爲什麼我說,據我測試過的那是因爲我已經轉移到了Git的..但如果我還記得pysvn是(唯一的和)最好svn的圖書館。

+0

感謝您的支持! – Danijel

+0

實際上,有兩個用於顛覆的python模塊:pysvn和svn(圍繞Subversion C庫的SWIG庫):http://svnbook.red-bean.com/en/1.7/svn.developer.usingapi.html#svn.developer .usingapi.otherlangs根據你想要做的事情,大多數人使用pysvn。 –

0

看看到蟒蛇xonsh模塊:http://xon.sh/tutorial.html

它可以調用shell命令加上管道輸出重定向有密切聯繫的python原有的代碼(嵌套的),而不需要與蟒蛇玩溝通bullshet並圍繞轉義字符。

例子

env | uniq | sort | grep PATH

COMMAND1 e>o < input.txt | COMMAND2 > output.txt e>> errors.txt

echo "my home is $HOME"

echo @(7+3)