[英]SVN Propset with in Python Script
我正在使用python腳本自動化項目創建。 我可以在python內部創建存儲庫,簽出,提交和導入目錄。
似乎不會做的是設置svn:externals
屬性。 我可以從命令行進行設置,但是當我嘗試通過subprocess.call
運行命令時, 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
作為call
的arg來使用,而沒有使用; 沒有骰子。
有任何想法嗎?
統計:
我建議您查看pysvn模塊與通過命令行進行比較:
但是,如果必須通過命令行執行操作,可以使用os.system調用代替子進程嗎?
os.system('svn propset svn:externals "trunk/Source/Interactive/Flash.Externals https://server/svn/proj/" . ')
應該以“作為外殼”運行,您只是無法從中獲取反饋-它會運行命令並等待命令完成。
那樣的話,或者您可以嘗試分解該命令(不能百分百確定這是否適用於Windows,但可以肯定):
import shlex
commands = shlex.split('svn propset svn:externals "trunk/Source/Interactive/Flash.Externals https://server/svn/proj/" .')
subprocess.call(commands)
我不知道我買了“它對shell = True不起作用”的聲明。 該錯誤表明它將雙引號解釋為文字,因為它試圖使用"trunk/Source/Interactive/Flash.Externals https://server/svn/proj/"
作為execvp參數之一。 雙引號僅對外殼具有特殊含義。
例:
>>> subprocess.call(["ls", '"."'], shell=False)
ls: ".": No such file or directory
2
使用shell = True:
>>> subprocess.call(["ls", '"."'], shell=True)
metrics_poller.sock OSL_PIPE_0_SingleOfficeIPC_b919ef148f655fcebc4bf633c062a098 sv9hg.tmp
metrics.sock proc_mgr_stats userinstall.mBa793
mysql_tzinfo_stderr sess_716518f985ab8de017981347a8b61c611c9880bd userinstall.omY802
如果shell = True變量確實沒有幫助,請嘗試刪除雙引號。
res = call(['svn', 'propset', 'svn:externals', \
gv.interactive_subpath +'Flash.Externals '+ gv.mirror_project_repo_url, \
'.'])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.