Mercurial: создать локальную копию удаленного репозитория в удаленном репозитории

Я использую Mercurial на настольных компьютерах, а затем загружаю локальные репозитории на централизованный сервер. Я заметил, что этот удаленный сервер не хранит локальные копии файлов в своих репозиториях (каталог пуст, кроме, очевидно, .hg).

Каков предпочтительный способ заполнения этих каталогов локальными копиями? (которые, в свою очередь, используются различными несвязанными службами на этом сервере).

Что я придумал до сих пор, так это использовать хук и hg archive для создания локальной копии. Это было бы удовлетворительным решением, но мне нужно настроить файл hgrc для каждого репозитория (что утомительно, но я не нашел способа централизовать это в /etc/mercurial/hgrc). Может быть, глобальный скрипт (в /etc/mercurial/hgrc запускать для каждого события группы изменений)? (в таком случае, как я могу получить имя репозитория для использования в сценарии if...then?)


person WoJ    schedule 30.04.2013    source источник


Ответы (1)


Если вы можете получить доступ к удаленному репозиторию, вы можете установить ловушку, когда приходят группы изменений, и выполнять hg update, когда это происходит.

Быстрая проверка показывает это в часто задаваемых вопросах (вопрос 4.21), но резюмируя/дублируя: отредактируйте .hg/hgrc в удаленном репозитории и добавьте следующие строки:

[hooks]
changegroup = hg update

Всякий раз, когда удаленный репозиторий отправляется (или когда он выполняет pull), он обновляется до последнего набора изменений.

Некоторые предостережения: это может привести к сбою, если в файлы на удаленной стороне были внесены какие-либо изменения (вместо этого вы можете использовать hg update -C). Кроме того, если вы отправили какие-либо анонимные ветки (которые вам пришлось бы сознательно принудительно), вы не можете обновить до того, до чего хотите обновить.

person icabod    schedule 30.04.2013
comment
Спасибо - это именно то, что я искал (я был слишком сосредоточен на hg archive) - person WoJ; 30.04.2013