MercurialがCVSやSubversionよりもマージする理由は、2つのヘッド/ブランチの最新の共通の祖先を追跡するためです。その情報を正確に提供していることを確認するか、合併が悪い
あなたはこのような何か場合:
hg init newrepo
cd newrepo
cvs checkout POINT_OF_DIVERGENCE
hg commit --addremove -m 'commiting point of divergence'
cvs checkout BRANCH
hg addremove --similarity 90 # let Mercurial discover any renames
hg commit -m 'committing branch head'
hg update -r 0 # jump back to point of divergence
cvs checkout HEAD
hg addremove --similarity 90 # let Mercurial discover any renames
hg commit -m 'commiting HEAD head'
hg merge
を、2つのヘッドのための共通の祖先は(CVSコマンドが間違っている場合は申し訳ありませんが、それは幸いに長い時間がかかった)発散のポイントになります。
問題は、POINT_OF_DIVERGENCEがCVSリポジトリ内のどこにあるのかを知ることです - CVSはそれを全く追跡しません。なぜなら、それ自身のマージがそれを使用しない理由です。
CVSのベストプラクティスでは、分岐するたびに発散点を示すタグを作成することを推奨しますが、それをやり遂げなかった場合は、先行きに厄介な狩猟があります。
最新の共通祖先が正しくなければ、MercurialマージはCVSより優れていません。
cvs2hgと呼ばれるcvs2svnのフォークを使用してください。私はブランチをどれくらいうまく扱っているのか分かりませんが、どこから始めればいいのでしょうか。 –
私の経験から、枝が分岐した場所を推測するのはひどい仕事でしたが、それはずっと前です。ブランチポイントタグ(CVSのベストプラクティス)を持っているなら、明示的に行う方が良いでしょう。 –