SubversionからMercurialに移行しています。移行を容易にするために、Subversionリポジトリのクローンである中間のMercurialリポジトリを作成しています。すべての開発者は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リポジトリにプッシュする準備ができているチェンジセットがあります。ここでは、ハッシュ625を使用したリビジョン#2263であることがわかります。
代替テキスト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
ローカルマシンに変更をプルします。は?2つのチェンジセットがあります。私の元のチェンジセットは現在、ローカルブランチとして表示されます。
代替テキスト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は、以前のチェンジセットがすでにプッシュされていても、プッシュしたいと思っています。
明らかに、私は何か間違ったことをしています。
また、2つのリビジョンをマージすることはできません。ローカルマシンで2つのリビジョンをマージすると、「マージ」コミットが発生します。そのマージコミットを中間の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.
マージをロールバックして、動作状態に戻す必要があります。
私は何が欠けていますか?