2

SVN と Trac が実行されているサーバーから変更をコミットすると、コミット後のフックが正常に機能します。しかし、Mac からリモートでコミットすると、アクティビティは Trac のタイムラインに表示されますが、チケットは更新されません。

コマンドラインからだけでなく、Netbeans 7 でもこれを試しましたが、結果は同じでした。パスワードは異なりますが、サーバーと Mac の両方で同じユーザー名でログインしています。数日前まで、何ヶ月もの間、すべてが正常に機能していたので、これは問題ではないことはわかっています。

この機能を壊すために、私の Mac またはサーバーで何が変更されたのかはわかりません。

2011 年 7 月 26 日に追加された詳細情報:

Mac では svn+ssh:// を使用しており、サーバーでは file:/// を使用しています。

Trac のログ レベルを DEBUG に設定していますが、何を探すべきかよくわかりません。

コミット後のスクリプトを以下に示します。QA アップデートと Campfire ポストの両方が機能するため、ポストコミット自体が機能していることはわかっていることに注意してください。また、$TRAC_ENV、$REPOS、および $REV をファイルに出力しようとしましたが、すべての変数が適切に設定されています。

#!/bin/sh

# POST-COMMIT HOOK
#
# The post-commit hook is invoked after a commit.  Subversion runs
# this hook by invoking a program (script, executable, binary, etc.)
# named 'post-commit' (for which this file is a template) with the 
# following ordered arguments:
#
<<<more comments, yada, yada>>>
#
# Here is an example hook script, for a Unix /bin/sh interpreter.
# For more examples and pre-written hooks, see those in
# the Subversion repository at
# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and
# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/


REPOS="$1"
REV="$2"
TRAC_ENV=/usr/share/trac/projects/main

#commit-email.pl "$REPOS" "$REV" commit-watchers@example.org
#log-commit.py --repository "$REPOS" --revision "$REV"

# update the qa working copy
/usr/bin/ruby /usr/local/svn-repo/hooks/scripts/svn-dev-wc-update.rb $REPOS $REV

# send a message to Trac concerning this commit
/usr/bin/trac-admin $TRAC_ENV changeset added $REPOS $REV

# send a message to Campfire's Engineering room
/usr/bin/ruby /usr/local/svn-repo/hooks/scripts/campfire-announce.rb $REPOS $REV 
4

2 に答える 2

0

古い質問ですが、同じ問題が発生し、すぐに解決しました。次のようなエラーメッセージが表示されただけです。

Warning: post-commit hook failed (exit code 2) with output:
Error: Command not found

見つからなかったコマンドは、tracadmin実行可能ファイルではありませんでした。そして、これは私がhttps経由でコミットしたときは起こりませんでした。しかし、違いは何ですか?違いは、https commitはユーザー'www-data'としてフックを呼び出し、svn +sshcommitは実際のユーザーのアカウントを使用することです。

これを解決するには、svnwriteというグループを作成し、それに自分自身を追加して、グループの書き込み権限をtracプロジェクトディレクトリに追加します。

于 2012-05-24T10:19:30.170 に答える
0

post-commit フック スクリプトの内容を投稿できますか?

サーバーからコミットするとき、どのようにリポジトリにアクセスしていますか? file://リポジトリの構文を使用していますか、それともsvn+ssh://リモートでコミットするときに使用するのと同じ URL を使用していますか? これらのアクセス方法の両方を試しても、同じ結果が得られますか?

また、Trac のロギング オプションを最大まで上げてみて、ログファイルに役立つものがあるかどうかを確認してください。

于 2011-07-25T23:51:33.613 に答える