次の方法で、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 の更新がスキップされたかどうか、または実際にレポが正常に更新されたかどうかを確認する方法はありますか?
今のところ、次のソリューションを使用していますが、それがエレガントなソリューションかどうかはわかりません。
if 'Skipped' in output:
logging.error('SVN update failed!')
exit(-1)