1

コミット時にSubversionが現在の作業コピーを自動的にデプロイするようにしようとしています。

たとえば、誰かが「public_html」リポジトリをチェックアウトしてから変更をコミットした場合、svn を実行しているサーバーで「svn update /path/to/public_html/」を自動的に実行するには、SVN が必要です。

以下を呼び出すコミット後のフックを設定しました。

/usr/bin/svn update /path/to/public_html/

post-commit フックが実行可能であることを確認しました。SSH 経由でスクリプトを手動で実行すると、適切に実行され、/path/to/public_html/ ディレクトリが更新されるため、post-commit スクリプトが正常に動作することがわかります。

私が遭遇している問題は、コミットするたびに次のエラーが発生することです。

Transmitting file data .svn: Commit failed (details follow):
svn: MERGE of '/svn/public_html': 200 OK (http://ourdomain.com)

つまり、SVN は完全に横たわっています。コミットは実際には失敗しません。ディレクトリを手動で更新すると (またはコミット後のスクリプトを手動で実行すると)、更新が完了し、変更がサーバーに反映されます。

それで、ポストコミットフックが失敗する理由を誰か知っていますか?

この件に関するかなりの数の投稿を見てきましたが、私が試した「ポストコミットスクリプトを手動で実行してみてください」以外に解決策があるようには見えません。問題は、SVN自体の問題のようです。

どんな助けでも大歓迎です!!

4

2 に答える 2

1

フックスクリプトには環境が存在しないことに注意する必要があります..つまり、コマンドの代わりにスクリプトで絶対パスを使用する必要があります。パスがないためです。ポストコミットを使用してもよろしいですか。ポストコミットはプリコミットのみのコミットを失敗させることはできず、開始コミットはそのようなことを行うことができます。

于 2010-08-04T20:13:10.483 に答える
0

svn サーバー プロセスのユーザー ID が /path/to/public_html/ にファイルとディレクトリを書き込むのに十分な権限を持っているかどうかを確認します。

別のアイデア: 作業コピー "/path/to/public_html/" に記載されているように、独自のリポジトリへのアクセスも必要です。svn+ssh または http プロトコルを使用している場合は、これをファイル プロトコルに変更することをお勧めします。とにかく、同じサーバー上にあります。

于 2010-08-04T20:15:05.310 に答える