subversion commit hook与cygwin失败

时间:2013-03-25 16:31:03

标签: svn cygwin

我们有一些自定义的subversion pre和post提交挂钩,可以在我们的生产服务器上正常工作。

对于开发人员测试,我使用的是cywgin。直到最近,提交钩子也正常工作。

然而,在运行cygwin更新后,钩子现在失败了(为了清晰起见,添加了换行符):

  0 [main] svn 14820 child_info_fork::abort: 
  C:\cygwin\bin\cygcrypto-1.0.0.dll: Loaded to different address: 
  parent(0x440000) != child(0x590000)

有没有人见过类似的东西?

2 个答案:

答案 0 :(得分:7)

这里的问题是fork失败:Subversion正在尝试派生一个新进程,而Windows正在使用意外的内存布局加载新进程。这是Cygwin试图解决的基本问题之一:Linux程序期望在生成新进程时,新进程将具有与旧进程相同的内存布局;每当新进程启动时,Windows都会主动更改内存布局。

The documented solution is in the Cygwin FAQ

简短版本需要执行以下操作:

  • 退出所有Cygwin进程。这意味着关闭所有MinTTY窗口,退出已运行的任何X服务器等。检查任务管理器。
  • 转到开始>运行(或点击 Win + R ),然后运行C:\cygwin\bin\dash
  • 在显示的窗口中,输入/bin/rebaseall并点击返回
  • 去做个自己的咖啡。

正如您所说,重新安装也会起作用;那是因为重新安装会在后台运行一个有限的Cygwin rebase。

答案 1 :(得分:1)

重新安装subversion修复此问题。