1

次の方法で、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)
4

2 に答える 2

0

したがって、これは、Davidの提案を考慮した良い解決策になるようです。

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 output.strip().startswith('Skipped'):
    logging.error('A fatal has error occurred while executing command: ' + cmd)
    exit(-1)
于 2012-09-05T07:22:19.797 に答える
0

エレガントであろうとなかろうと、それが機能すればそれは機能します!しかし、私はあなたがpysvnを調べるべきだと思います、それはあなたが必要とすることをするかもしれません。ただし、1.7ではなくsvn 1.6を使用しているようです:http://pysvn.tigris.org/docs/pysvn_prog_guide.html

于 2012-09-05T06:39:29.733 に答える