1

Mercurialリポジトリに簡単なchangegroupフックを設定して、関心のあるユーザーに一連の変更を電子メールで送信しました。管理するリポジトリごとに1つのスクリプトを使用したいと思います。また、変更グループの元となったリポジトリを特定したいと思います。Mercurial Hooksのドキュメントによると、この目的で環境変数HG_URLを使用できます。ただし、この変数から期待するものが得られません。

期待される:

https://repo01/hg/project

実際:

remote:https::rnideffer

これがURLである理由と、変更グループフックに期待したものを取得するにはどうすればよいですか?

4

1 に答える 1

1

フックは、changegroup使用されているリモートURLを常に認識できるとは限りません。Mercurial Bookのフックの章から:

可能であれば、Mercurialは、リポジトリ間でチェンジセットデータを転送するアクティビティの「向こう側」の場所をフックに通知します。これは、Mercurialによってurlという名前のPythonパラメーター、またはHG_URLという名前の環境変数で提供されます。コメントはありません

この情報は常にわかっているわけではありません。httpまたはsshを介して提供されているリポジトリでフックが呼び出された場合、Mercurialはリモートリポジトリがどこにあるかを知ることはできませんが、クライアントがどこから接続しているかは知っている可能性があります。このような場合、URLは次のいずれかの形式になります。コメントなし

remote:ssh:1.2.3.4-IPアドレス1.2.3.4のリモートsshクライアント。コメントはありません

remote:http:1.2.3.4-IPアドレス1.2.3.4のリモートhttpクライアント。クライアントがSSLを使用している場合、これはremote:https:1.2.3.4の形式になります。コメントはありません

つまり、rnidefferという名前のマシンからhttps経由でプッシュしていると言われています。

通知拡張機能の使用を検討しましたか?Mercurialに同梱されており、あなたが説明していることをほぼ正確に実行し、リポジトリ名を必要なURLに変換するために必要なURLプレフィックスを付けることができます。

于 2011-01-22T20:19:17.847 に答える