我正在以以下方式(例如)从我的 python 脚本中执行 svn 命令(假设我不想使用 pysvn):
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 更新,或者实际上是否成功更新了 repo?
目前,我正在使用以下解决方案,但不确定它是否是一个优雅的解决方案:
if 'Skipped' in output:
logging.error('SVN update failed!')
exit(-1)