2

git post-receiveリポジトリへのプッシュが行われたことを別のサービスに通知できるように、Mercurialのフックに相当するものが必要です。

フックに必要なのは単純です。最後のチェンジセットのチェンジセットリビジョンです。

もちろん、gitとの違いは、ref名前が付けられないことと、リポジトリに複数のヘッドがプッシュされる可能性があることです。私はそれで大丈夫かもしれません。

今のところ私が望まないのは、hg incomingフックを使用した現在の実装の動作です。プッシュされたすべてのチェンジセットのリビジョンがあります。

次に、要約するhgと、リポジトリに最後にプッシュされたコミットを通知するための最良の方法は何ですか?

編集:新しいコードが到着したため、リポジトリからプルするように別のサービスに通知することが目標です。しかし、私はサービスがプッシュのすべてのチェンジセットに対してプルすることを望んでいません

4

1 に答える 1

2

changegroup基本的にはフックを使いたいようです。これはincomingフックに似ていますが、変更のバンドルに対して1回だけ起動します。最初の新しいチェンジセットのIDが提供されますが、それがあなたに$HG_NODE適しているかどうかはわかりません。

参照:http ://www.selenic.com/mercurial/hgrc.5.html#hooks

「最後の」チェンジセットが正確にどのチェンジセットを意味するのか、私には少しわかりません。チェンジセットは一度に複数のヘッドに追加される可能性があるため、最後のチェンジセットは任意のブランチに存在する可能性があるため、更新などの情報としてはあまり役立ちません。

最後のプッシュ以降に新しいチェンジセットを特定したい場合は、最初のチェンジセットを使用することで、(前のプッシュの知識がなくても新しいチェンジセットを特定できるため)良くない場合でも同様に適しているはずです。

ただし、最後のチェンジセットのIDを本当に知りたい場合は、フックから次のコマンドを呼び出すことができますhg tip --template "{node}"。詳細については、を参照hg help tipしてください。

この情報を正確に使用するための背景情報を提供していただければ、それを最適に処理する方法についてより明確な提案をすることができます。

于 2012-06-22T08:45:17.020 に答える