Mercurialはchangenotifyを使用してメールを送信しません
-
28-10-2019 - |
質問
http中央のMercurialリポジトリを設定し、プッシュするたびにメールを送信しようとしています。 Mercurialページと
プッシュは正常に機能しますが、通知メッセージがまったく表示されません。助けてください。
クライアントのリポジトリフォルダにある.hg / hgrcは次のようになります ジェネラコディセタグプレ
私の/home/myhome/something/subscription.confは次のようになります ジェネラコディセタグプレ
保存すると、通知メッセージがまったく表示されないことに気付いた場合、結果は次のようになります ジェネラコディセタグプレ
[更新:]
システムにhgextフォルダがないことがわかりました。そのため、hgバージョンに一致するソースを手動でダウンロードし、以下のようにhgrcを更新しましたが、それでも機能しません。助けてください。 ジェネラコディセタグプレ
[更新2:]
ありがとうRy4an-試してみましたが、まだ運がありません。
私のウェブサーバーで
/ var / wwwおよび/ var / www / hgの下 .hgrcファイルを作成しましたが、どちらが自分のWebルートかわからないため、両方の場所でコンテンツを作成しました ジェネラコディセタグプレ
このユーザー名は、リポジトリにプッシュしようとしているクライアントのユーザー名です。
クライアント上
リポジトリの.hg / hgrcに、信頼できるセクションを追加しました ジェネラコディセタグプレ
上記の手順は役に立ちませんでした
2番目のアプローチ
クライアントで
レポの.hgの下で、私はしました ジェネラコディセタグプレ
プッシュしようとすると、プッシュ中にメッセージが表示されました ジェネラコディセタグプレ
この無視コマンドは最初のアプローチでは表示されません。hgrcの所有権を変更した後でのみ、これがポップアップ表示されます。
解決
信頼の問題である可能性がありますが、最初に他のいくつかのことを考えてみましょう。
A)拡張負荷を次のように切り替えます: ジェネラコディセタグプレ
hgext部分は不要になりましたが、問題はありません。拡張機能へのフルパスを与えることは、将来の更新の場合により脆弱になります。 Mercurialに付属し、notifyが常に行う拡張機能には、生のnotify=
構文で十分です。
B)test = false
をtest = true
に切り替えると、これをデバッグするのに役立ちます。メールがStdoutに送信されるので便利です。
さて、これら2つは完了しました。信頼を見てみましょう。 Mercurialの信頼システムは、誰もがコードを実行できるようにする必要はないという考えに基づいて構築されています。リポジトリの.hg/hgrc
ファイルに次のようなセクションが含まれていると想像してみてください。
ジェネラコディセタグプレ
プッシュすると、ホームディレクトリが削除されます。それは私をやっつけます。これを回避するために、Mercurialは信頼するhgrcファイルのみをロード/実行し、 your hgrcの[trusted]
セクションで何を信頼するかを指示します。 sshをプッシュすると、リモートマシンに効果的にログインします。これは、実行する他のhgrcファイルを示す独自の~/.hgrc
です。
HTTPは特別です。認証している場合でも、リモートシステムでMercurialを自分で実行していない可能性があります。方法に応じて、 www-data 、 www 、 apache 、 noone などの非ユーザーユーザーである可能性があります。 Webサーバーが構成されているので、そのリポジトリの.hg/hgrc' owned (or group-owned) by an user (or group) that the webserver user trusts. To achieve that you can either
chwownthe
.hg / hgrcfile over to the web server user, or find the web server's home directory (often
/ var / www) and create a
.hgrcfile in there with a
[trusted] block saying that the web server user trusts whomever it is that owns the repo's
.hg / hgrc`ファイルを作成する必要があります。
何が起こっているのかが正しければ、ウェブサーバーのエラーログに「誰かが所有する/path/to/repo/.hg/hgrcを信頼していません」などのメッセージがたくさん表示されます。 "。
TL; DR: Webサーバーユーザーがフックを指定している.hg/hgrc
の所有者を(hgrcの意味で)信頼していることを確認してください。
他のヒント
これは、Exchange Serverと通信するときに機能しました: ジェネラコディセタグプレ
上記をリポジトリのhgrcファイルに入れます。
例:C:\ repository \ test.hg \ hgrc