Когда изменение VCS для моего FakeItEasy проекта от SVN до Подвижного на Google Code I было немного слишком нетерпеливым (я забавен как этот). То, что я сделал, просто проверяло последнюю версию из SVN и затем фиксировало тот контроль как первый пересмотр нового Подвижного repo. Это, очевидно, имеет эффект, что вся история потеряна.
Позже, будучи немного лучше приученным к Подвижному я понял, что существует такая вещь как "преобразовывают расширение", которое позволяет Вам преобразовывать SVN repo в Подвижный repo. Теперь то, что я хочу сделать, должно преобразовать старый SVN repo и затем иметь все массивы изменений от в настоящее время существующего Подвижного repo, импортированного в это, преобразовал repo кроме самой первой фиксации к Подвижному.
Я преобразовал SVN repo в локальный Подвижный repo, но теперь, когда я застреваю. Я думал, что смогу использовать расширение преобразования для обеспечения текущего Подвижного репозитория в преобразованный, и наличие карты соединения встык удаляют первую фиксацию, но я, может казаться, не заставляю это работать.
Я также попытался просто использовать, преобразовывают без карты соединения встык для получения всех массивов изменений от текущего Подвижного repo в преобразованный и переоснову вторая версия в токе к последней фиксации от старого репозитория SVN, но я не могу заставить это работать также.
Для создания это более ясное позволяет, говорят, что у меня есть эти два репозитория:
A: revA1-revA2
B: revB1-revB2-revB3 (Where revB1 is actually a copy of revA2)
Теперь я хочу объединить эти два в новый репозиторий, содержащий это:
C: revA1-revA2-revB2-revB3
Пока вы меняете хеши в новых ревизиях (а вы это делаете), вы можете просто использовать экспорт
и import
(или команда transplant
, которая является оболочкой для обоих).
Вы уже выполнили преобразование, и это здорово, теперь войдите в репозиторий B и выполните:
hg export -o 'changeset-%R.patch' 1:tip
, который создаст набор изменений - ##. Patch для каждого набора изменений в репозитории B, кроме первого (с нулевым номером).
Теперь перейдите в репозиторий C и импортируйте их:
hg import $(ls *.patch | sort -V)
Все это должно применяться правильно, если действительно revA2 и revB1 идентичны.
Вы можете получить изменения из несвязанного репозитория с помощью "hg pull --force"
Вот простой пример использования:
настроить te st каталоги
C:\temp>mkdir hgtest
C:\temp>cd hgtest
C:\temp\hgtest>mkdir a
C:\temp\hgtest>mkdir b
C:\temp\hgtest>mkdir c
сделать репозиторий a
C:\temp\hgtest>cd a
C:\temp\hgtest\a>hg init
C:\temp\hgtest\a>echo line one >> file.txt
C:\temp\hgtest\a>hg add file.txt
C:\temp\hgtest\a>hg ci -m "check in one"
C:\temp\hgtest\a>echo line two >> file.txt
C:\temp\hgtest\a>hg ci -m "check in two"
C:\temp\hgtest\a>echo line three >> file.txt
C:\temp\hgtest\a>hg ci -m "check in three"
сделать репозиторий b
C:\temp\hgtest\a>cd ..\b
C:\temp\hgtest\b>copy ..\a\file.txt file.txt
C:\temp\hgtest\b>hg init
C:\temp\hgtest\b>hg add file.txt
C:\temp\hgtest\b>hg ci -m "check in b one"
C:\temp\hgtest\b>echo line four >> file.txt
C:\temp\hgtest\b>hg ci -m "check in b two"
C:\temp\hgtest\b>echo line five >> file.txt
C:\temp\hgtest\b>hg ci -m "check in b three"
сделать репозиторий c сначала клоном a, затем внести изменения из b
C:\temp\hgtest\b>cd ..\c
C:\temp\hgtest\c>hg clone C:\temp\hgtest\a .
C:\temp\hgtest\c>hg pull --force C:\temp\hgtest\b
C:\temp\hgtest\c>hg merge
C:\temp\hgtest\c>hg ci -m "check in c one"