0

DAV 経由で Apache が提供する SVN リポジトリがあります。

サーバーへの telnet セッションを開きたいポストコミット フックを作成しました。

コマンドプロンプトからコマンドを実行すると、正常に動作します。

しかし、フックで実行すると、実行する権限がないと言って失敗します。

私のスクリプトは簡単です:

 #!/bin/sh
 REPOS="$1"
 REV="$2"

 echo -e symeon\\nfrobnitz\\n.say \#foo easitag $REV $(svnlook author $REPOS -r $REV)    $(svnlook changed $REPOS -r $REV): $(svnlook log $REPOS -r $REV) | telnet server 8080

フックは RedHat Enterprise Linux マシンで実行されています。Apacheユーザーとして実行していると仮定しています。

理由を知っている人はいますか?

4

2 に答える 2

0

2 つのポイント:

  1. Apache を実行しているユーザー アカウント (Apache でリポジトリを提供していると仮定) には、スクリプトが実行しようとしているすべてのことを実行する権限が必要です。
  2. フック スクリプトは空の環境で実行されます。環境変数は設定されておらず、$PATH. したがって、実行しようとしているバイナリ ( svnlook& telnet) は見つかりません。それらへのフル パスを指定するか、$PATHスクリプトで a を設定する必要があります。
于 2013-05-19T02:36:59.297 に答える