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

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

但是,在运行 cygwin 更新后,钩子(Hook)现在失败了(为清楚起见添加了换行符):

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

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

最佳答案

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

The documented solution is in the Cygwin FAQ

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

  • 退出所有 Cygwin 进程。这意味着关闭所有 MinTTY 窗口,退出您正在运行的任何 X 服务器等。检查任务管理器。
  • 转到“开始”>“运行”(或按 Win+R),然后运行 ​​C:\cygwin\bin\dash
  • 在出现的窗口中,输入 /bin/rebaseall 并点击 Return。
  • 去给自己泡杯咖啡。

  • 正如您所指出的,重新安装也可以;那是因为重新安装将在后台运行有限的 Cygwin rebase 。

    关于svn - cygwin 的 subversion 提交钩子(Hook)失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15619964/

    10-14 17:01
    查看更多