私のシナリオは次のとおりです。
私が複製したプロジェクトは、もともと Mercurial を使用してバージョン管理されていたもので、その元のレポの複製とそのすべての履歴があります。ある時点で、プロジェクトの所有者は GitHub に移行することを決定しましたが、移行のすべての履歴を失ったため、この新しいリポジトリは古いプロジェクトの継続ですが、リビジョン 0 から事実上新たに開始しています。
Hg に固執したいのですが、Hg-Git を使用すると明らかに Git リポジトリからプルできますが、Hg リポジトリの先頭と Git リポジトリの末尾をくっつける方法がわからないので、以前と同じように、定期的な更新を引き続けることができます。Hg リポジトリの先頭に一致する Git での実際のコミットは最初のコミットではないため、尾の先端ではありません。
hg convert と --splicemap が役立つかもしれないと思ったのですが、それについて読めば読むほど、私にとっては解決策とは思えなくなりました。
どうすればこれを達成できるかについて、誰かが提案できますか?
更新
同様のことをしようとしているかもしれない人の情報のために、私は最終的に私が望んでいた結果を達成することができましたが、それは長く曲がりくねった道でした。
- hg-git プラグインを使用して Github から Git リポジトリを取得しました。
- 次に、それを新しいリポジトリに複製し、関連するが切断された Hg リポジトリの内容をhg pull --forceを使用してプルしました。
これで、レポに関する限り共通の祖先を持たない 2 つの異なる開発ブランチを持つレポができました。これをhydraと呼びます。 - hg convertとsplicemapを使用して、履歴の一致するポイントでブランチを新しいレポに結合し、hg stripを実行して不要なビットを取り除きました。
- ただし、トリックは、元の Git リポジトリが更新されるということでした。この結合されたリポジトリに新しい変更を取り込めるようにしたかったのです。
ソリューション?バッチ ファイル。
そうですね、バッチ ファイルです。
解決策は実質的に 3 つのセットでした。まず、Github から Git リポジトリを保持するリポジトリにプルします。2 番目は Git リポジトリから hydra にプルされます (Hg ソースは変更されないため、そこから再度プルする必要はありません)。3 番目にhg convertコマンドを再実行して、結合されたリポジトリを hydra からの新しい情報で更新します。
それは不快で、長々としたもので、設定するのは少し悪夢のようなものでしたが、今では問題なく動作し、最終的なレポは予測可能で妥当なサイズです.