Субпозитории работают точно так, как вы хотите.
Mercurial никогда не обновляет субрепо автоматически до подсказки.Он всегда остается на выбранном вами наборе изменений.Из документации :
Подпункты не отслеживают автоматически последние изменения своих источников .Вместо этого они обновляются до набора изменений, который соответствует измененному набору изменений в наборе изменений верхнего уровня.Это означает, что разработчики всегда получают согласованный набор совместимого кода и библиотек при обновлении.
Чтобы достичь желаемого, вы можете выполнить следующие шаги:
echo subrepo = https://example.com/subrepo/repo/path > .hgsub
hg add .hgsub
hg clone https://example.com/subrepo/repo/path subrepo
hg -R subrepo update mytag
hg commit
Это создасткаталог subrepo с содержимым указанного репозитория, который будет оставаться в теге mytag
до тех пор, пока вы не обновите вручную на что-либо другое!
Каждый, кто клонирует ваш репозиторий, будетиметь вложенный репозиторий в том же наборе изменений, что и у вас (т. е. mytag
).
К вашему сведению, набор изменений, в который обновляется вложенный репозиторий, сохраняется в файле .hgsubstate
в корне основного хранилища.*