提交钩子失败

时间:2008-11-20 15:54:45

标签: svn visualsvn-server

我正在尝试实现一些钩子,但前后都失败了。当我尝试提交时,我得到两个相同的错误消息:

'*-commit' hook failed (did not exit cleanly: apr_exit_why_e was 2, exitcode was
-1073741515).   with no output.

Exitcode -1073741515看起来很奇怪,google-fu的一点点让我知道了:

  

作为十六进制DWORD处理,您看到的错误代码是0xC0000135。

     

即Sev = 11,C = 0,R = 0,Facility = 0,Code = 0x0135。

     

可以在NtStatus.h中找到值0xC0000135,其定义如下

//
// MessageId: STATUS_DLL_NOT_FOUND
//
// MessageText:
//
//  {Unable To Locate Component}
//  This application has failed to start because %hs was not found.
// Re-installing the application may fix this problem.
//
#define STATUS_DLL_NOT_FOUND             ((NTSTATUS)0xC0000135L)
好的,没有找到,不应该太难了吗?我有一个带有svn的虚拟机,它与这些挂钩很和平。所以我在两台机器上运行Filemon.exe和Depends.exe。

我仍然在浏览两个服务器的filemon日志,并且依赖并没有给我任何我认为被Commit Hook命中的可执行文件的任何独特问题。

我决定快速查看事件日志,哦男孩!

  

'pre-commit'挂钩失败(没有干净地退出:apr_exit_why_e为2,exitcode为-1073741515)。没有输出。 [409,#165001]

额外的信息,这[409,#165001]已经遍布谷歌,但我并没有真正接受任何有用的信息。

钩子显式调用带有三个参数的可执行文件。

  

C:\ SubversionNotify \ SubversionNotify.exe%1%2 -pre

我甚至试图使用变量。

SET REPOS=%1
SET REV=%2
C:\SubversionNotify\SubversionNotify.exe %REPOS% %REV% -pre

查看filemon日志会告诉我它从未进入SubversionNotify.exe

我已经无法花更多的时间来实现这一点,帮助我,你是我唯一的希望。

服务器规格:

  

Windows XP,运行VisualSVN Server,最新版本。

编辑: 似乎SubversionNotify抛出了异常,回到Depends.exe来检查dll是否失败。

错误如下:

  

应用程序无法正确初始化(0xc0000135)。

之前看过0xC0000135,dll打猎啊!

3 个答案:

答案 0 :(得分:3)

通常,提交挂钩的问题是绝对没有环境(因此没有路径),因此所有引用都必须非常明确。我通常最终制作一个小型批处理文件,将目录更改为正确的目录并执行命令。

编辑:

尝试将目录更改为C:\ SubversionNotify

也许您缺少运行该程序所需的运行时dll。 记住:没有路径。您可以通过在命令行窗口中设置NOTHING的路径来模拟此操作。     设置PATH =。

验证像记事本这样的简单命令不起作用。那你的exe工作了吗?找出丢失的dll的位置,并在批处理文件的开头构建路径。

答案 1 :(得分:1)

我想我会在这里分享解决方案,因为我笑了起来。

SubversionNotify是用.NET编写的 服务器没有安装.NET Framework VM做了。

我现在戴着笨蛋帽。

答案 2 :(得分:0)

感谢您发布答案。如果你不这样做,我会花更多的时间来试试这个,并且感觉比现在更愚蠢。刚刚吹出一个盒子并安装了VisualSVN和SubversionNotify,但无法弄清楚它为什么不起作用。