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

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

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

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

1 ответ

Решение

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

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

[hooks]
changegroup = hg update

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

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

Другие вопросы по тегам