私は2つの別々のMercurialリポジトリを持っています。この時点で、私は2つのプロジェクトに同時に取り組みたいので、それらが「1つになる」ことは理にかなっています。
2つのプロジェクトをそれぞれ新しいリポジトリのサブディレクトリにしたいと思います。
- 2つのプロジェクトをマージするにはどうすればよいですか?
- これは良い考えですか、それとも別々にしておくべきですか?
あるリポジトリから別のリポジトリにプッシュできるはずです...多分これは本当に簡単ですか?
回答:
この方法で2つのリポジトリを組み合わせることができました。
hg clone first_repository
リポジトリの1つを複製するために使用します。hg pull -f other_repository
他のリポジトリからコードをプルするために使用します。-f
プルの(強制)フラグが重要です。2つのリポジトリが同じソースからのものではないという事実を無視するように指示されています。
この機能のドキュメントは次のとおりです。
hg merge
最終的にすべてを機能させるには、実行する必要もあります
hg glog
行った後に見ると、2つの無関係なチェンジセットの行があることがわかります。各行の最初のチェンジセットには親がありませんが、Mercurialにとっては問題ではありません。プルしたらhg mv
、すべてを適切なサブフォルダーに配置する行ごとに1つの新しいチェンジセットを作成し、行をマージしてすべての設定を行います。
hgは1.3(2009-07-01)からサブレポを持ち始めました。初期のバージョンは不完全で不安定でしたが、今ではかなり使いやすくなっています。
プロジェクト全体で同じコードを使用していない場合は、別々に保管してください。これらの各プロジェクトの個人リポジトリを、ディレクトリだけ離れた場所に設定できます。必要がないのに、なぜすべてのブランチ、マージ、およびコミットコメントを混在させるのですか。
編集について:あるリポジトリから別のリポジトリにプッシュします。このtransplant
コマンドはいつでも使用できます。ただし、これはすべて、2つを組み合わせたいというあなたの願望を実際に回避するものであるため、私の提案を使用すると不快に感じるかもしれません。次に、フォレスト拡張などを使用できます。
hg transplant -s REPOSITORY lower_rev:high_rev