0

私がしたこと - 問題は何ですか

svn にいくつかのファイルが存在するディレクトリを追加しました。

$ svn add ABC (ABC is directory)
A ABC
A ABC/file_1
A ABC/file_2
A ABC/file_3

それから私は -

$ svn ci -m "some comments" ABC
Adding  ABC
Adding  ABC/file_1
Adding  ABC/file_2
Adding  ABC/file_3
Transmitting file data..svn commit failed details follows
svn commit blocked by precommit hook exit code3 with output

今、私はコミットできません。それを成功させる方法がわかりません。助けてくれませんか。ありがとう。

4

1 に答える 1

1

あなたは何も悪いことをしていません。

問題は pre-commit フックにあります。何らかの理由で、pre-commit フックがコミットの完了を妨げています。これが pre-commit フックの目的です。サイト固有のポリシーに違反している場合、トランザクションの完了を停止します。

標準の pre-commit フックはありません。それらはサイトによって実装される必要があります。多くのサイトは、さまざまな理由で独自のサイトを作成しています。さまざまな標準の pre-commit フックを使用するものもあります。そのため、Subversion リポジトリの責任者を見つけて、pre-commit フックについて、それが何をするのか、なぜ特定のトランザクションを拒否するのかを尋ねる必要があります。

通常、pre-commit フックの作成者は親切にも理由を教えてくれます。(ディレクトリを追加する権限がないか、何らかの理由でリポジトリがロックされているなど)。ただし、 pre-commit フックを実行した人は、何が間違っているのかを判断することを不可能にするエラーメッセージを表示できなかったようです. おそらく、pre-commit フック自体にエラーがあり、それが完了していません。

pre-commit フックを使用するサイトにそれを変更してもらい、失敗したときに常にエラー メッセージが表示されるようにします。pre-commit フックが出力を STDERR に書き込む場合、pre-commit フックがコミットに失敗した場合はその情報を出力しますが、コミットが許可されている場合は出力しません。したがって、デバッグ コードをコミット フックに追加する必要があります。これにより、失敗したときに失敗した場所を簡単に確認できます。また、トランザクションを拒否する何らかの理由がある場合は、その理由が示されます。

于 2012-10-11T13:45:40.513 に答える