クライアントがプッシュまたはプルして「変更が見つかりません」になるたびに、サーバー上でフックを実行するためのハックまたは方法はありますか。リポジトリが変更されたかどうかに関係なく、クライアントのプルでスクリプトを実行できるようにしたいと考えています。
pretxnchangegroup
現在、すべてのケースで標準フック ( 、など) を簡単に使用できますchangegroup
が、変更がない場合はトリガーされません。
クライアントがプッシュまたはプルして「変更が見つかりません」になるたびに、サーバー上でフックを実行するためのハックまたは方法はありますか。リポジトリが変更されたかどうかに関係なく、クライアントのプルでスクリプトを実行できるようにしたいと考えています。
pretxnchangegroup
現在、すべてのケースで標準フック ( 、など) を簡単に使用できますchangegroup
が、変更がない場合はトリガーされません。
フックはあなたが探していることをすることができません. サーバー側で実行されるフックはすべて、物事 (変更セットまたはプッシュキー) の到着によってトリガーされます。Nothing-arrivedや決して送信しないコマンド ( incoming
、outgoing
など)に対するサーバー側のフックはありません。
私が試したロングショットの 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 など) がたくさんあるため、スクリプトは想像以上に頻繁に実行されることになります。