【问题标题】:Yet another Subversion "Commit failed" MERGE of 'blabla': 200 OK'blabla'的另一个Subversion“提交失败”合并:200 OK
【发布时间】:2010-06-14 12:00:10
【问题描述】:

每当我尝试在 Windows 上使用提交后挂钩(在本地运行存储库和 Trac)进行提交时,我都会得到臭名昭著的“MERGE of 'whatever': 200 OK”,我快疯了。我已经找了一天了,没有找到任何解决方案。

以下是它的设置方式以及我到目前为止所尝试的方式:

设置: Windows 7(64 位) VisualSVN 服务器 TortoiseSVN 追踪 0.11.6

  • 我在 Windows 上使用三个标准脚本进行 post-commit。
  • 当我使用 repo 和 changesetnumber 作为参数从命令提示符运行 post-commit.cmd 时,一切正常。
  • 经过大量故障排除后,我发现如果我删除 trac-post-commit.cmd 中的最后一行,Python "%~dp0\trac-post-commit-hook.py" -p "% TRAC_ENV%" -r "%REV%" -u "%AUTHOR%" -m "%LOG%",提交失败错误消失。
  • 在 python 脚本中添加 1/0(生成除以零错误)不会显示任何不同。但是,从命令提示符中我得到一个错误。
  • 删除python脚本中的所有代码也会使提交失败消失,所以我猜罪魁祸首在trac-post-commit-hook.py中。

也许如果我可以将实际错误发送到日志文件,我可以更深入地挖掘,但我不确定如何。

提交后.cmd:

调用 %~dp0\trac-post-commit-hook.cmd %1 %2

trac-post-commit-hook.cmd:
http://trac.edgewall.org/browser/trunk/contrib/trac-post-commit-hook?rev=920

非常感谢,如果有人可以在这里提供一点帮助,那将意味着很多! /马丁

【问题讨论】:

标签: python svn tortoisesvn post-commit visualsvn-server


【解决方案1】:

要在执行 SVN 提交时收到错误消息,您应该能够更改:

if __name__ == "__main__": 
    if len(sys.argv) < 5: 
        print "For usage: %s --help" % (sys.argv[0]) 
    else: 
        CommitHook() 

到:

if __name__ == "__main__": 
    if len(sys.argv) < 5: 
        print "For usage: %s --help" % (sys.argv[0]) 
    else: 
        try:
            CommitHook()
        except Exception, e:
            print >> sys.stderr, str(e)
            sys.exit(1)

【讨论】:

  • 对不起,我试图将错误输出到一个文件中(在 TortoiseSVN 中看不到它们),但它不起作用。我在 IDLE 中运行下面的脚本没有问题,但是当我尝试在 trac-post-commit-hook 中实现它时,没有任何反应。 import sys error_log = open("C:\error_log.txt", 'w') sys.stderr = error_log try: CommitHook() except Exception, e: print >> sys.stderr, str(e) f.close() error_log.close() 有什么提示吗?谢谢!
猜你喜欢
  • 2010-10-21
  • 1970-01-01
  • 2011-09-22
  • 2014-02-22
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多