2

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

'*-commit' 挂钩失败(没有完全退出:apr_exit_why_e 为 2,exitcode 为
-1073741515)。没有输出。

退出代码 -1073741515 看起来很奇怪,快速搜索一下 google-fu 让我明白了这一点:

被视为十六进制 DWORD,您看到的错误代码是 0xC0000135。

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

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

//
// 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)

好吧,dll没找到,应该不会太难吧?我有一个带有 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 服务器,最新版本。

编辑:似乎 SubversionNotify 正在抛出异常,返回 Depends.exe 以检查哪些 dll 失败。

错误如下:

应用程序未能正确初始化 (0xc0000135)。

那个 0xC0000135 之前看到过,dll 狩猎啊!

4

3 回答 3

3

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

编辑:

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

也许您缺少运行程序所需的一些运行时 dll。记住:没有路径。您可以通过在命令行窗口中将路径设置为 NOTHING 来模拟这一点。设置路径=。

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

于 2008-11-20T16:01:14.827 回答
1

我想我会在这里分享解决方案,因为我笑得很开心。

SubversionNotify 是用 .NET 编写的。
服务器没有安装 .NET Framework。
虚拟机做到了。

我现在戴着一顶傻帽。

于 2008-11-20T17:41:46.790 回答
0

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

于 2009-10-06T02:46:03.333 回答