Одной из стратегий может быть преобразование сундука. Возможно, вам придется играть в некоторые игры, если ваш ствол сместился, но это не должно быть слишком сложно.
Другим инструментом в вашем арсенале может быть преобразование hg-> hg и расширение rebase. Вы можете использовать их, чтобы возиться с вашим деревом после того, как у вас есть вещи в репозитории hg и привить ветки после того, как вы их преобразовали. Или вживите новые кусочки своей истории в сундук после его перемещения.
Вот хорошая ссылка на документацию по расширению Mercurial rebase .
По сути, вот стратегия, которой вы бы следовали ... Во-первых, используйте конвертируемое расширение или hgsvn для преобразования частей хранилища. Это может привести к нескольким линиям транка или ветвям, которые находятся в отдельном хранилище от основной линии.
Если у вас есть два раздела соединительных линий в отдельных репозиториях, а тот, который находится в каталоге с именем second
, непосредственно следует за разделом в каталоге с именем first
, вы можете сделать это:
cd second
hg log -r 0
# Note the revision hash
cd ../first
hg tip
# Again, note the revision hash
hg pull -f ../second
hg rebase --source <revision hash from hg log -r 0> --dest <revision hash from hg tip>
Это привьет одну часть ствола к другой части ствола.
Если у вас есть ветка в отдельном репозитории, процедура немного сложнее:
cd branch
hg log -r 0
# Note the revision hash
cd ../trunk
# Find the revision that the branch branches off from and note its hash.
# We will call this revision the 'branch base'.
hg pull -f ../branch
hg rebase --source <revision hash from hg log -r 0> --dest <revision hash of branch base>
Это привьет ветку на главное дерево.