Мы мигрируем из 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.
и мне нужно откатить слияние, чтобы вернуться в рабочее состояние.
Чего мне не хватает?