0

クライアントがプッシュまたはプルして「変更が見つかりません」になるたびに、サーバー上でフックを実行するためのハックまたは方法はありますか。リポジトリが変更されたかどうかに関係なく、クライアントのプルでスクリプトを実行できるようにしたいと考えています。

pretxnchangegroup現在、すべてのケースで標準フック ( 、など) を簡単に使用できますchangegroupが、変更がない場合はトリガーされません。

4

1 に答える 1

0

フックはあなたが探していることをすることができません. サーバー側で実行されるフックはすべて、物事 (変更セットまたはプッシュキー) の到着によってトリガーされます。Nothing-arrivedや決して送信しないコマンド ( incomingoutgoingなど)に対するサーバー側のフックはありません。

私が試したロングショットの 1 つは、フックを使用することでした。post-serveクライアントが ssh 経由でリモート リポジトリに接続すると、実際hg serveにはそのクライアントでpost-serve実行されているため、ssh セッションの最後にフックが実行されることを期待していましたが、そのような運はありませんでした (実際、そのフックはまったく存在しない可能性があります)。 .

幸いなことに、フック以外にもハッカー向けのオプションがいくつかあります。ssh 経由でアクセスするリポジトリの場合、.ssh/authorized-keysファイルを変更してコマンドの実行を強制できます。

command="/home/me/hg_and_somethingelse.sh" ssh-rsa AAAA....

次に、次のように/home/me/hg_and_something_else.shなります。

#!/bin/bash
hg $@
echo ANY COMMAND FROM HERE ONWARD IS RUN FOR EVERY PUSH, PULL, CLONE, etc.

http で提供されるリポジトリの場合と同様に、使用している wsgi ファイルの最後に必要なものを追加するだけです。

注意点として、頻繁に変更をチェックするツール (IDE など) がたくさんあるため、スクリプトは想像以上に頻繁に実行されることになります。

于 2013-01-27T15:43:06.720 に答える