Хук Mercurial changegroup передается неправильно HG_URL

Я настроил простую группу изменений для своих репозиториев Mercurial, чтобы отправлять набор изменений заинтересованным пользователям по электронной почте. Я хотел бы использовать один сценарий для каждого репозитория, которым я управляю, и я также хотел бы определить репозиторий, из которого пришла группа изменений. Согласно документации Mercurial Hooks, для этой цели доступна переменная среды HG_URL. Однако я не получаю того, что ожидаю от этой переменной:

ожидал:

https://repo01/hg/project

действительный:

remote:https::rnideffer

Почему это URL-адрес и как мне получить то, что я ожидал, в хук группы изменений?


person purecharger    schedule 22.01.2011    source источник


Ответы (1)


Хук changegroup не всегда может определить используемый удаленный URL. Из главы об хуках в Mercurial Book :

Когда это возможно, Mercurial сообщит хуку расположение «дальней стороны» действия, которое передает данные набора изменений между репозиториями. Это предоставляется Mercurial в параметре Python с именем url или в переменной среды с именем HG_URL. Без комментариев

Эта информация не всегда известна. Если хук вызывается в репозитории, который обслуживается через http или ssh, Mercurial не может сказать, где находится удаленный репозиторий, но может знать, откуда подключается клиент. В таких случаях URL-адрес принимает одну из следующих форм: Без комментариев.

remote:ssh:1.2.3.4 — удаленный ssh-клиент, по IP-адресу 1.2.3.4. Без комментариев

remote:http:1.2.3.4 — удаленный http-клиент, с IP-адресом 1.2.3.4. Если клиент использует SSL, это будет иметь вид remote:https:1.2.3.4. Без комментариев

Итак, вам говорят, что они отправляют данные через https с машины с именем rnideffer.

Рассматривали ли вы возможность использования расширения уведомлений? Он поставляется с mercurial, делает в значительной степени именно то, что вы описываете, и может быть снабжен префиксом URL-адреса, необходимым для преобразования имен репо в нужные вам URL-адреса.

person Ry4an Brase    schedule 22.01.2011
comment
Отличное объяснение. Я обнаружил, что переменная среды PWD передается apache и содержит абсолютный путь к репозиторию на диске, который я могу использовать для своих нужд. Я использую хук группы изменений вместо уведомления, потому что мне нужны электронные письма для каждой отправленной группы изменений, а не для каждого отдельного изменения. - person purecharger; 25.01.2011
comment
Рад, что это помогло, хотя NotifyExtension также изменяет группы. Он поддерживает как «changegroup», так и «changeset». См. раздел hooks этого mercurial.selenic.com/wiki/NotifyExtension. - person Ry4an Brase; 25.01.2011