Совершить ошибку крюка - PullRequest
2 голосов
/ 20 ноября 2008

Я пытаюсь реализовать некоторые хуки, как до, так и после ошибки, однако. Я получаю одно и то же сообщение об ошибке при попытке зафиксировать:

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

Exitcode -1073741515 выглядит странно, и быстрый гугл-фу дал мне следующее:

Обрабатывается как шестнадцатеричное DWORD, код ошибки, который вы видите, 0xC0000135.

То есть Sev = 11, C = 0, R = 0, Facility = 0, Код = 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)

Хорошо, длл не найден, не должно быть слишком сложно, верно? У меня есть виртуальная машина с SVN, которая мирно с этими крючками. Поэтому я запускаю Filemon.exe и Depends.exe на обеих машинах.

Я все еще слоняюсь по журналам filemon для обоих серверов, и зависит от того, не создает ли я каких-либо уникальных проблем с любым исполняемым файлом, который я могу себе представить, если его ударил Commit Hook.

Я решил быстро взглянуть на журналы событий, и, о Боже!

Хук 'pre-commit' завершился неудачно (не завершился чисто: apr_exit_why_e было 2, код выхода был -1073741515). без вывода. [409, # 165001]

Дополнительные сведения: этот [409, # 165001] повсюду в Google, но я не собираюсь ничего полезного.

Хук явно вызывает исполняемый файл с тремя параметрами.

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, последняя версия.

Edit: Кажется, что SubversionNotify выдает исключение, обратно в Depends.exe, чтобы проверить, что DLL не работает.

Ошибка выглядит следующим образом:

Приложение не удалось правильно инициализировать (0xc0000135).

Этот 0xC0000135 был замечен ранее, охота на dll, хой!

Ответы [ 3 ]

3 голосов
/ 20 ноября 2008

Обычно проблема с хуками фиксации состоит в том, что АБСОЛЮТНО нет среды (следовательно, нет пути), поэтому все ссылки должны быть болезненно явными. Я обычно заканчиваю тем, что делаю небольшой командный файл, который меняет каталог на правильный каталог и выполняет команду.

Edit:

СПРАВОЧНИК ИЗМЕНЕНИЯ СПРАВОЧНИКА C: \ SubversionNotify

Возможно, вам не хватает некоторой DLL-библиотеки времени выполнения, необходимой для запуска программы. Помните: нет пути. Вы можете смоделировать это, установив путь к НИЧЕГО в окне командной строки. установить PATH =.

Убедитесь, что простые команды, такие как блокнот, не работают. Ваш exe работает тогда? Выясните, где находятся отсутствующие библиотеки, и постройте путь в начале командного файла.

1 голос
/ 20 ноября 2008

Я подумала, что поделюсь Решением здесь, потому что мне очень смешно.

SubversionNotify было написано в .NET.
На сервере не установлен .NET Framework.
ВМ сделал.

Сейчас я в кепке.

0 голосов
/ 06 октября 2009

Спасибо за публикацию вашего ответа. Если бы вы этого не сделали, я бы потратил гораздо больше времени, пытаясь справиться с этим, и почувствовал бы себя еще более глупо, чем сейчас. Просто взорвал коробку и сделал установку VisualSVN и SubversionNotify и не мог понять, почему это не работает.

...