Как предотвратить слияние расходящихся веток ртути? - PullRequest
1 голос
/ 25 августа 2011

У меня есть проект, хранящийся в Mercurial, который вышел далеко за пределы своей первоначальной компетенции, и теперь я хочу разделить хранилище на два отдельных проекта. Скажем, дерево файлов выглядит примерно так:

src/
  a/
    a.h
    a.c
  b/
    b.h
    b.c

Скажем, у меня есть hg clone d в этом хранилище дважды, и в первом клоне я выполнил hg rm src/b/*, а во втором я выполнил hg rm src/a/*. Это дает мне два отдельных дерева исходных текстов, которые я хочу, с историей и нумерацией ревизий, сохраненных в каждой ветви.

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

Возможно ли это? Если нет, существует ли канонический способ создания двух параллельных проектов из одного оригинала, который сохраняет историю и нумерацию ревизий?

1 Ответ

3 голосов
/ 25 августа 2011

Каноническим способом было бы использовать hg convert с файловой картой, подобной этой:

exclude b
rename a .

(и впоследствии с ролями a и b, обращенными для созданиявторой репозиторий)

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

Такжесм. этот вопрос для справки.

...