Мы переходим из Subversion в Mercurial. Чтобы облегчить миграцию, мы создаем промежуточный репозиторий Mercurial, который является клоном нашего репозитория Subversion. Все разработчики начнут переходить в репозиторий Mercurial, и мы будем периодически вводить изменения из промежуточного репозитория Mercurial в существующий репозиторий Subversion. Через некоторое время мы просто устанем от репозитория Subversion, а промежуточный репозиторий Mercurial станет новой системой записи.
Dev 1 Local --+--> Mercurial --+--> Subversion
Dev 2 Local --+ +
Dev 3 Local --+ +
Dev 4 -------------------------+
Я тестировал это, но у меня возникает проблема, когда я вывожу изменения из своего локального репозитория, в промежуточный репозиторий Mercurial, а затем в наш репозиторий Subversion.
alt text http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/01.png
На моей локальной машине у меня есть набор изменений, который выполняется и готов быть перенесен в наш промежуточный репозиторий Mercurial. Здесь вы можете увидеть, что это версия # 2263 с hash 625...
alt text http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/02.png
Я нажимаю только этот набор изменений в удаленный репозиторий.
alt text http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/03.png
Пока все выглядит хорошо. Изменен набор настроек.
hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Теперь я перехожу к удаленному репозиторию и обновляю рабочий каталог.
hg push
pushing to svn://...
searching for changes
[r3834] bmurphy: database namespace
pulled 1 revisions
saving bundle to /srv/hg/repository/.hg/strip-backup/62539f8df3b2-temp
adding branch
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
rebase completed
Затем я подталкиваю изменение до Subversion, отлично работает. На данный момент это изменение находится в репозитории Subversion, и я возвращаю внимание на мой локальный клиент.
alt text http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/04.png
Я переношу изменения на свою локальную машину. А? Теперь у меня есть два набора изменений. Теперь мой первоначальный набор изменений появляется как локальная ветвь.
alt text http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/05.png
В другом наборе изменений есть новый номер версии 2264 и новый хэш 10c1...
alt text http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/06.png
В любом случае, я обновляю свое локальное репо до новой версии.
alt text http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/07.png
Теперь я переключился.
alt text http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/08.png
Итак, я, наконец, нажимаю "определять и маркировать исходящие изменения", и, как вы видите, Mercurial все еще хочет вытолкнуть мои предыдущие изменения, даже если они уже были нажаты.
Ясно, что я делаю что-то неправильно.
Я также не могу объединить две версии. Если я объединю две версии на моей локальной машине, я получаю коммит слияния. Когда я выталкиваю это объединение в промежуточный репозиторий Mercurial, я больше не могу изменять изменения в нашем репозитории Subversion. В итоге у меня возникла следующая проблема:
hg update
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
hg push
pushing to svn://...
searching for changes
abort: Sorry, can't find svn parent of a merge revision.
и мне нужно отменить слияние, чтобы вернуться в рабочее состояние.
Что мне не хватает?