2

配置:Python 2.6,SVN 客户端/服务器 1.7.10

我可以从 Python 中毫无问题地签出一个 repo,但是在提交它时我遇到了一个问题。我的代码使用 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

我可以看到:

发送用户\kerick~1\appdata\local\temp\tmpkv1icr\mem_usage_db.csv 传输文件数据.svn:E165001:提交失败(详细信息如下):svn:E165001:提交被预提交挂钩(退出代码255)阻止输出:此时使用情况出乎意料。

如果我将相同的字符串剪切并粘贴到 DOS shell 并执行它,它会按预期工作,没有错误。

那么,是否有人对通过 Python 脚本向 SVN 提交修订的方法有任何建议?

4

0 回答 0