簡體   English   中英

帶有Python腳本的SVN Propset

[英]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來使用,而沒有使用; 沒有骰子。

有任何想法嗎?

統計:

  • Python 2.7
  • Windows Server 2003
  • VisualSVN

我建議您查看pysvn模塊與通過命令行進行比較:

http://pysvn.tigris.org/

但是,如果必須通過命令行執行操作,可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM