Как клонировать темы в mercurial?
Предыстория: Меркуриальные темы
У Mercurial хороший вызов функцииtopics
как частьevolve
расширение. Они действуют как временные легкие локальные ветки и являются неотъемлемой частью , обеспечивая хорошее взаимодействие с Git (черезhg-git
) Например. Они активируются включением следующего в ваш
~/.hgrc
файл (или для каждого репо в
.hg/hgrc
):
# ~/.hgrc
...
[extensions]
evolve =
topics =
Поскольку они предназначены для локальной работы, при отправке фазы не отправляются на сервер (а становятся временными ветками в git с рабочего процесса Heptapodрабочим процессом Heptapod ).
Вопрос
Как я могу клонировать репозиторий локально, чтобы получить темы в моем клоне?
Частью ответа является установка исходного репо на непубликацию: (Возможно, это следует сделать в клонированном репо после клонирования).
# source_repo/.hg/hgrc
[phases]
publish = false
При этом сохраняется фаза наборов изменений, являющихся частью тем, но имена тем не клонируются.
МнЗЕ
mkdir a
cd a
touch A.txt
hg init
hg add A.txt
hg topic "A"
hg commit -m "Initial commit of A"
echo > .hg/hgrc <<EOF
[phases]
publish = false
EOF
cd ..
hg clone a b
Сейчас в
a
, есть тема `A``, и фиксация находится на стадии черновика ( показана оранжевым цветом в выводе ):
$ hg log -v
changeset: 0:62c4... # orange, indicating draft phase
tag: tip
topic: A
user: Michael <...>
date: Wed ...
files: A.txt
description:
Initial commit of A
пока в
b
, все то же самое, в том числе
draft
фаза, но без темы:
$ hg log -v
changeset: 0:62c4... # orange, indicating draft phase
tag: tip
user: Michael <...>
date: Wed ...
files: A.txt
description:
Initial commit of A
2 ответа
Считайте это обходным путем, возможно, но он должен работать.
Если вы просто работаете локально, вам не нужно
Скопируйте его куда хотите, затем, когда вы запустите команды Mercurial по этому пути, он будет вести себя точно так же, как он был клонирован, за исключением того, что он не увидит ваш оригинал как репозиторий публикации по умолчанию, а будет таким же, как ваш оригинал. Очевидно, вы можете изменить это в
В зависимости от ваших потребностей, вы можете сделать
Ответ может быть
hg clone --stream a b
как предлагается в этом ответе на Как можно получить доступ к скрытому набору изменений с сервера Mercurial?. Однако похоже, что это может привести ко всем скрытым наборам изменений: я бы предпочел иметь только те, которые необходимы для активных тем. Это также не очень очевидно или запоминается. Я подозреваю, что есть лучший способ.