我使用python腳本自動化項目創建。我可以在python中創建存儲庫,簽出,提交和導入目錄。在Python腳本中使用SVN Propset
它似乎不會做的是設置svn:externals
屬性。我可以從命令行設置它,但是當我嘗試運行帶有subprocess.call
的命令時,它不起作用。
這裏的命令行(即工作在簽出項目目錄時):
svn propset svn:externals "trunk/Source/Interactive/Flash.Externals https://server/svn/proj/" .
這裏的腳本調用(檢查回購出gv.project_repo_dir
後運行):
# gv is a global variables object
odir = getcwd()
chdir(getcwd() + '/' + gv.project_repo_dir)
res = call(['svn', 'propset', 'svn:externals', \
'"'+ gv.interactive_subpath +'Flash.Externals '+ gv.mirror_project_repo_url +'"', \
'.'])
chdir(odir)
這是腳本運行的錯誤:
svn: Error parsing svn:externals property on '.': '"trunk/Source/Interactive/Flash.Externals https://server/svn/proj/"'
我試過這個與shell=True
作爲arg到call
且沒有;沒有骰子。
任何想法?
統計:
- 的Python 2.7
- 的Windows Server 2003
- 的VisualSVN
'os.system()'做到了!該命令現在運行良好(雖然我認爲我的目標目錄可能是錯誤的,因爲它實際上並沒有鏈接到外部 - 但這是另一個問題)。謝謝!順便說一下,'os.system()'確實會在Windows NT,2000和XP上返回執行程序的返回碼。我*曾*看過pysvn,但我們必須記得升級,以便我們將來升級我們的svn服務器,這是跟蹤可能會破壞事情的另一件事。 – paul 2012-08-03 12:57:55
對不起 - 是的,os.system將返回返回代碼,但是如果你想說的話,你不能像在子進程中那樣對stdout/stdin/stderr進行PIPE操作,將命令的輸出記錄到文件或任何東西。 而我聽到雅保持依賴關係簡單..所以爲;-) – 2012-08-03 16:49:04
作爲一個側面說明,但我仍然不知道爲什麼shell = True不適用於Windows壽。它在Python的頁面上記錄爲不支持Windows ...你只是覺得它不會很難支持... – 2012-08-03 16:49:56