Для этого вы можете использовать Mercurial * Mercurial . Для этого вам нужно включить расширение convert . Расширение позволит вам склеить историю вместе как часть конверсии. Это просто означает, что вы можете указать новых родителей для существующей ревизии.
Так что, если вы начнете с
$ hg glog
@ changeset: 1:aaee9686dedf
| tag: tip
| user: Martin Geisler <mg@lazybytes.net>
| date: Fri Mar 23 15:08:11 2012 +0100
| summary: bar
|
o changeset: 0:17474bd28fe5
user: Martin Geisler <mg@lazybytes.net>
date: Fri Mar 23 15:08:05 2012 +0100
summary: foo
Сначала вы можете импортировать необходимые ревизии из SVN:
$ hg update null
$ run-your-script.sh
Это создаст вторую корневую ревизию - теперь в вашем хранилище фактически есть две непересекающиеся истории. Я сделал один набор изменений, где я добавил baz
файл:
$ hg glog
@ changeset: 2:515e1292862b
tag: tip
parent: -1:000000000000
user: Martin Geisler <mg@lazybytes.net>
date: Fri Mar 23 15:09:19 2012 +0100
summary: baz
o changeset: 1:aaee9686dedf
| user: Martin Geisler <mg@lazybytes.net>
| date: Fri Mar 23 15:08:11 2012 +0100
| summary: bar
|
o changeset: 0:17474bd28fe5
user: Martin Geisler <mg@lazybytes.net>
date: Fri Mar 23 15:08:05 2012 +0100
summary: foo
Последний шаг - связать истории вместе: мы хотим, чтобы 17474bd28fe5 имел 515e1292862b в качестве первого родителя. Используйте hg log --debug
для просмотра полных хэшей набора изменений и создайте файл карты срезов с помощью
17474bd28fe535c15c7dad3659994ab048146e99 515e1292862ba2d6776294ffb00c533dc6850c66
Затем запустите
$ hg convert --splicemap map.txt your-repo your-spliced-repo
Вы найдете измененную историю в your-spliced-repo
.