2010-10-19 2 views

ответ

13

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

Вы можете, однако, создать новый репозиторий, чьи изменения соответствуют подмножеству более поздних наборов изменений в другом репозитории. Они не будут, однако, быть теми же наборами изменений, потому что у них будут разные хеш-узлы, а любые клоны из исходного репо не будут работать с новым («несвязанные репозитории»).

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

hg -R /path/to/bigrepo export 10:tip > latestchanges.patch 
hg init newsmallrepo 
hg -R newsmallrepo import < latestchanges.patch 

Это будет копировать только наборы изменений пронумерованных 10 и затем в новые ревизии с различными хэш в новом репозитории. Это также не будет работать с ошибками.

+0

Это решение. Я искал эти команды и не нашел. Спасибо Ry4an! –

11

См. Расширение convert (прилагается к Mercurial). Простой пример может служить следующее:

hg convert <src> <dest> --config convert.hg.startrev=<rev> 

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

Включить расширение, добавив следующее mercurial.ini:

[extensions] 
convert = 

Run hg help convert для выбора параметров.

+0

под ** Windows **, добавление/создание всего в *** 'C: \ Users \ \ mercurial.ini' * не работает, но ** корректировка существующего **' C: \ Users \ \. Файл hgrc' ** сделал трюк :-) (hg 2.7.1) –

+0

Я использую Windows и Mercurial.ini. Оба будут работать. См. [Hgrc docs] (http://www.selenic.com/mercurial/hgrc.5.html). –

Смежные вопросы