2

私はいくつかのフックを実装しようとしていますが、プリとポストの両方が失敗します。コミットしようとすると、両方で同じエラー メッセージが表示されます。

「*-commit」フックが失敗しました (正常に終了しませんでした: apr_exit_why_e は 2、exitcode は
-1073741515)。出力なし。

Exitcode -1073741515 は奇妙なものに見えます。ちょっとした google-fu でこれが得られました:

16 進数の 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 を搭載した VM があります。そこで、両方のマシンで Filemon.exe と Depends.exe を実行します。

私はまだ両方のサーバーのfilemonログを調べていますが、コミットフックによってヒットしたと思われる実行可能ファイルに固有の問題はありません。

イベント ログをざっと見てみることにしました。

「pre-commit」フックが失敗しました (正常に終了しませんでした: apr_exit_why_e は 2、exitcode は -1073741515 でした)。出力なし。[409、#165001]

余分な情報、この[409、#165001]はGoogleのいたるところにありますが、私は本当に役立つものを拾っていません.

フックは、3 つのパラメーターを使用して実行可能ファイルを明示的に呼び出しています。

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

変数も使用しようとしました。

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

filemon ログを見ると、SubversionNotify.exe に到達しないことがわかります

これを実装するのにこれ以上多くの時間を費やすことができないところまで来ています。助けてください。あなたが私の唯一の希望です。

サーバー仕様:

VisualSVN サーバーを実行している Windows XP、最新リリース。

編集: SubversionNotify が例外をスローしているように見えます。Depends.exe に戻って、どの dll が失敗しているかを確認します。

エラーは次のとおりです。

アプリケーションを正しく初期化できませんでした (0xc0000135)。

その 0xC0000135 は以前に見られました。

4

3 に答える 3

3

通常、コミットフックの問題は、環境がまったくない(つまりパスがない)ことです。そのため、すべての参照を非常に明示的にする必要があります。私は通常、ディレクトリを適切なディレクトリに変更してコマンドを実行する小さなバッチファイルを作成することになります。

編集:

ディレクトリをC:\SubversionNotifyに変更してみてください

プログラムを実行するために必要なランタイムdllが不足している可能性があります。注意:パスはありません。コマンドラインウィンドウでパスをNOTHINGに設定することで、これをシミュレートできます。PATH=を設定します。

メモ帳などの簡単なコマンドが機能しないことを確認します。その場合、exeは機能しますか?不足しているdllがどこにあるかを調べ、バッチファイルの先頭にパスを作成します。

于 2008-11-20T16:01:14.827 に答える
1

大笑いしたので、ここで解決策を共有したいと思いました。

SubversionNotify は .NET で作成されました。
サーバーに .NET Framework がインストールされていませんでした。
VMはそうしました。

私は今、劣等生の帽子をかぶっています。

于 2008-11-20T17:41:46.790 に答える
0

回答を投稿していただきありがとうございます。もしあなたがいなかったら、私は今よりももっと時間をかけてこの問題を解決しようとして、もっと愚かだと感じていたでしょう。ボックスを吹き飛ばして、VisualSVN と SubversionNotify をインストールしましたが、なぜ機能しないのかわかりませんでした。

于 2009-10-06T02:46:03.333 に答える