我執行的svn命令成功,或不執行(假設我不想使用pysvn)以下方式從我的Python腳本(例如):如何找到,如果SVN命令在python
cmd = 'svn update http://myserver/myrepo'
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output, stderr = p.communicate()
status = p.returncode
if status != 0:
logging.error('A fatal has error occurred while executing command: ' + cmd)
exit(-1)
假設服務器上不存在myrepo。在這種情況下,SVN將默默生成如下輸出:
Skipped http://myserver/myrepo
並且狀態變量的值爲'0'。有沒有一種方法可以通過返回代碼檢測SVN更新是否被跳過,或者實際上是否成功更新了回購?
現在,我使用下面的解決方案,但不知道這是否是一個優雅的一個:
if 'Skipped' in output:
logging.error('SVN update failed!')
exit(-1)
輸出檢查是正確的選擇,但確保它在一行的開頭是一個好主意(與存儲庫名稱中的「跳過」一詞相反) –