10

サーバーに設定したリポジトリの非常に単純なコミット後フックを作成しようとしています。スクリプトは次のとおりです。

REPOS="$1"
REV="$2"

cd /var/www/directory && svn update --username user --password pass

SVNクライアントからコミットを実行すると、次のエラーが発生します。

post-commit hook failed (exit code 255) with no output.

ただし、sudo bash post-commitを使用してcliからpost-commitフックを実行すると、完全に実行されます。私が間違っていることについて何か考えはありますか?

4

4 に答える 4

6

255は、ファイルが見つからなかったことを意味します。すべてのファイルへの絶対パスを使用してみてください。

REPOS="$1"
REV="$2"

cd /var/www/directory && /usr/bin/svn update --username user --password pass

postcommitフックが実行されている環境のPATHenv変数は、SVN実行可能ファイルが存在する場所を含むように設定されていない可能性があります。

于 2011-10-20T20:08:20.740 に答える
5

わかりました、私は問題を理解しました。これは、パスの問題(chownが提案したように、その答えを選択します)とアクセス許可の問題の組み合わせでした。この問題について(および一般的にSVNを設定するために)ブログ投稿を書きました。これはhttp://brennydoogles.wordpress.comにあります。

于 2011-10-28T20:32:31.250 に答える
1
  • コミット後のフックを追加することを忘れない#!/bin/shでください。Python#!/bin/env pythonを使用している場合に使用してください
  • 許可を確認してくださいchmod a+x post-commit
  • フック内のコマンドがインストールされ、到達可能であることを確認してください。

Docker(ubuntuベース)でSVNを実行し、Redmine同期にコミット後フックを使用すると、この問題が発生します。

curl "http://my.redmine.ip/sys/fetch_changesets?id=myproject&key=ETji9KUfs3XxLyyr6cRN"

エラーが発生しましWarning: post-commit hook failed (exit code 255) with no outputた。

次に、Dockerに打ち込み、このフックを手動で実行して、「curl」がインストールされていないことを確認します。

curlをインストールしてフックを正常に実行しましたが、コミット時に同じ警告が表示されます。

このように追加した後#!/bin/sh

#!/bin/sh
curl "http://my.redmine.ip/sys/fetch_changesets?id=myproject&key=ETji9KUfs3XxLyyr6cRN"

すべて順調。

于 2015-12-22T08:47:45.473 に答える
1

また、svnサーバーがapacheで実行されており、オペレーティングシステムがSElinuxを実行している場合は、次のように、スクリプトを実行するためのapache権限を与えることを忘れないでください。

%chcon -t httpd_exec_t / home / svn / repos / hooks / post-commit

于 2018-09-19T00:35:14.727 に答える