Мы переходим с Subversion на Mercurial. Чтобы облегчить миграцию, мы создаем промежуточный репозиторий Mercurial, который является клоном нашего репозитория Subversion. Все разработчики начнут переходить на репозиторий Mercurial, и мы будем периодически перемещать изменения из промежуточного репозитория Mercurial в существующий репозиторий Subversion. По прошествии некоторого времени мы просто устареем репозиторий Subversion, и промежуточный репозиторий Mercurial станет новой системой записи.
Dev 1 Local --+--> Mercurial --+--> Subversion
Dev 2 Local --+ +
Dev 3 Local --+ +
Dev 4 -------------------------+
Я тестировал это, но продолжаю сталкиваться с проблемой, когда отправляю изменения из моего локального репозитория в промежуточный репозиторий Mercurial, а затем в наш репозиторий Subversion.
http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/01.png
На моем локальном компьютере у меня есть набор изменений, который зафиксирован и готов к отправке в наш промежуточный репозиторий Mercurial. Здесь вы видите ревизию # 2263 с хешем 625 ...
http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/02.png
Я отправляю только эту ревизию в удаленный репозиторий.
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, и я снова обращаю внимание на своего локального клиента.
http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/04.png
Я загружаю изменения на свой локальный компьютер. Хм? Теперь у меня есть две ревизии. Моя исходная ревизия теперь отображается как локальная ветка.
http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/05.png
Другой набор изменений имеет новый номер ревизии 2264 и новый хэш 10c1 ...
http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/06.png
В любом случае, я обновляю свое локальное репо до новой версии.
http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/07.png
Я сейчас переключился.
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.
и мне нужно откатить слияние, чтобы вернуться в рабочее состояние.
Что мне не хватает?