2

構成: Python 2.6、SVN クライアント/サーバー 1.7.10

問題なく Python 内からレポをチェックアウトできますが、コミットするときに問題が発生しました。私のコードは subprocess.call() メソッドを使用しています。

def Svn_Checkin( dir_path = "..", svn_rev = "0" ):
"""
    Svn_Checkin:
        check in mem_usage_db file.
        dir_path should be the path to a temporary folder
        svn_rev should be the latest svn rev for the input data
"""
try:
    svn = os.environ[ "SVNBIN" ].strip( '"' )
except:
    svn = "svn"

message = '"memory usage db update with rev %s"' % ( svn_rev )
cmd = [ svn, "ci", "-m", message ]
path = dir_path

try:
    username_password = os.environ[ "GENERIC_READONLY_LOGIN" ].split()
    map(lambda x: cmd.append( x ), os.environ[ "GENERIC_READONLY_LOGIN" ].split() ) 
except KeyError:
    pass
except:
    print( string.join( apply( traceback.format_exception, sys.exc_info() ), '' ) )

cmd.append( path )
print " ".join( cmd )
subprocess.call( cmd )

私のコードは次の文字列を生成します:

svn ci -m "リビジョン 6780 でメモリ使用量データベースを更新" c:\users\kerick~1\appdata\local\temp\tmpembglo

私は見えます:

Sending users\kerick~1\appdata\local\temp\tmpkv1icr\mem_usage_db.csv ファイル データを送信しています出力: この時点での使用は予想外でした。

同じ文字列をコピーして DOS シェルに貼り付けて実行すると、期待どおりに動作し、エラーは発生しません。

では、Python スクリプトを介して SVN にリビジョンをコミットする方法について何か提案はありますか?

4

0 に答える 0