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
вместо). Кроме того, если вы выдвинули какие-либо анонимные ветки (которые вам пришлось бы сознательно форсировать), вы не можете обновиться до того, что хотите обновить.