Как сделать Mercurial субпозитарием, чтобы он всегда указывал на определенный набор изменений или тег? - PullRequest
8 голосов
/ 17 декабря 2011

Мне любопытно, возможно ли это с Mercurial. Я бы хотел, чтобы в проекте были подпункты, которые всегда привязаны к заданному вручную наборам изменений или, что еще лучше, к тегу.

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

1 Ответ

3 голосов
/ 17 декабря 2011

Субпозитории работают точно так, как вы хотите.

Mercurial никогда не обновляет субрепо автоматически до подсказки.Он всегда остается на выбранном вами наборе изменений.Из документации :

Подпункты не отслеживают автоматически последние изменения своих источников .Вместо этого они обновляются до набора изменений, который соответствует измененному набору изменений в наборе изменений верхнего уровня.Это означает, что разработчики всегда получают согласованный набор совместимого кода и библиотек при обновлении.

Чтобы достичь желаемого, вы можете выполнить следующие шаги:

  1. echo subrepo = https://example.com/subrepo/repo/path > .hgsub
  2. hg add .hgsub
  3. hg clone https://example.com/subrepo/repo/path subrepo
  4. hg -R subrepo update mytag
  5. hg commit

Это создасткаталог subrepo с содержимым указанного репозитория, который будет оставаться в теге mytag до тех пор, пока вы не обновите вручную на что-либо другое!

Каждый, кто клонирует ваш репозиторий, будетиметь вложенный репозиторий в том же наборе изменений, что и у вас (т. е. mytag).

К вашему сведению, набор изменений, в который обновляется вложенный репозиторий, сохраняется в файле .hgsubstate в корне основного хранилища.*

...