0

IIS を介して Windows ボックスで Mercurial をホストします。

すべてのリポジトリを配置するルート ディレクトリがあります。

d:\repos
   - ProjectA
       - .hg
          - hgrc
   - ProjectB
       - .hg
          - hgrc
   - ProjectC
       - .hg
          - hgrc

すべてのリポジトリの hgrc ファイルは、通知拡張機能を次のようにセットアップします。

config =d:\hg\Repositories\NotificationList.txt

そうすれば、wiki で説明されているように、すべての通知受信者を管理する単一のファイルがあります: https://www.mercurial-scm.org/wiki/NotifyExtension

しかし、ウィキは、独自のリポジトリを介してその NotificationList.txt ファイルを制御することについて言及していますか? どうやってやるの?d:\repos\HgNotify に別のリポジトリを作成し、そこに NotificationList.txt ファイルがある場合、ユーザーは変更、コミット、およびプッシュ バックを行うことができますが、プッシュが発生すると、hg サーバーで NotificationList.txt が更新されません。

どういうわけかそのファイルを更新する方法はありますか? Hg サーバーにキーの設定がありませんか? それとも、ポスト プッシュ フックを使用してそのファイルをデプロイする必要がありますか?

更新 1

ティムの回答から詳細を追加しましたが、プッシュ時に HTTP 500: サーバー エラーが発生し続けました。私は最終的にpython呼び出しを追跡する方法を見つけました(python -m win32traceutil)、ここに問題があると思われるものがあります:

 File "C:\Python27\lib\site-packages\mercurial\util.py", line 402, in hgexecutable
 exe = findexe('hg') or os.path.basename(sys.argv[0]) AttributeError: 'module' object has no attribute 'argv'

hg.exe が見つからないようです。

更新 2

TortoiseHg をインストールし、システムを再起動しました。今私は得ます: emote: 1 つの変更を含む 1 つの変更セットを 1 つのファイルに追加しました リモート: 通知: 1 人のサブスクライバーに 1 つの変更を送信します リモート: 警告: changegroup.update フックがステータス 1 で終了しました

そのため、hg.exe が見つかったと考えられますが、ファイルが更新されないため、機能していません。

アップデート 3

ここで私の解決策を見つけました: https://stackoverflow.com/a/8023594/698

私が最終的に使用したコマンドラインは次のとおりです。

 changegroup = cmd /c hg update

私も追加しました: [ui] debug=true

私のhgrcへ。この 2 つを組み合わせることで、より意味のあるメッセージを得ることができました。最後に、「アクセスが拒否されました」と表示されました。ユーザーに完全な許可を与えましたが、IUSR に完全な許可を与えてもうまくいかなかった理由がわかりません。後で掘り下げなければならないことがあります。

4

1 に答える 1