我正在尝试实现一些钩子,但前后都失败了。当我尝试提交时,我得到两个相同的错误消息:
'*-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打猎啊!
答案 0 :(得分:3)
通常,提交挂钩的问题是绝对没有环境(因此没有路径),因此所有引用都必须非常明确。我通常最终制作一个小型批处理文件,将目录更改为正确的目录并执行命令。
编辑:
尝试将目录更改为C:\ SubversionNotify
也许您缺少运行该程序所需的运行时dll。 记住:没有路径。您可以通过在命令行窗口中设置NOTHING的路径来模拟此操作。 设置PATH =。
验证像记事本这样的简单命令不起作用。那你的exe工作了吗?找出丢失的dll的位置,并在批处理文件的开头构建路径。
答案 1 :(得分:1)
我想我会在这里分享解决方案,因为我笑了起来。
SubversionNotify是用.NET编写的 服务器没有安装.NET Framework VM做了。
我现在戴着笨蛋帽。
答案 2 :(得分:0)
感谢您发布答案。如果你不这样做,我会花更多的时间来试试这个,并且感觉比现在更愚蠢。刚刚吹出一个盒子并安装了VisualSVN和SubversionNotify,但无法弄清楚它为什么不起作用。