Mercurialで2つのプロジェクトを組み合わせる方法は?


84

私は2つの別々のMercurialリポジトリを持っています。この時点で、私は2つのプロジェクトに同時に取り組みたいので、それらが「1つになる」ことは理にかなっています。

2つのプロジェクトをそれぞれ新しいリポジトリのサブディレクトリにしたいと思います。

  1. 2つのプロジェクトをマージするにはどうすればよいですか?
  2. これは良い考えですか、それとも別々にしておくべきですか?

あるリポジトリから別のリポジトリにプッシュできるはずです...多分これは本当に簡単ですか?

回答:


69

この方法で2つのリポジトリを組み合わせることができました。

  1. hg clone first_repositoryリポジトリの1つを複製するために使用します。
  2. hg pull -f other_repository他のリポジトリからコードをプルするために使用します。

-fプルの(強制)フラグが重要です。2つのリポジトリが同じソースからのものではないという事実を無視するように指示されています。

この機能のドキュメントは次のとおりです。


1
これにより、2番目のリポジトリからのコミットのハッシュキーも保持されますか?(私はそうは思わないが、マージを行うまでは問題ないかもしれない。)
Macke

6
これは機能しますが、hg merge最終的にすべてを機能させるには、実行する必要もあります
Factor Mystic

7
@Marcusリンドブロム:チェンジを引っ張ると、決して今までにそのハッシュを変更しません。これをhg glog行った後に見ると、2つの無関係なチェンジセットの行があることがわかります。各行の最初のチェンジセットには親がありませんが、Mercurialにとっては問題ではありません。プルしたらhg mv、すべてを適切なサブフォルダーに配置する行ごとに1つの新しいチェンジセットを作成し、行をマージしてすべての設定を行います。
Steve Losh

1
2つのリポジトリに両方に共通のコードがある場合はどうなりますか。それはマージによって自動的に処理されますか?マージに関しては、$ hgマージと言うことができますか?
kamal 2011年

2
参考までに、このプロセスのドキュメントは次のとおりです。mercurial.selenic.com/ wiki / MergingUnrelatedRepositories
ゲント

7

hgは1.3(2009-07-01)からサブレポを持ち始めました。初期のバージョンは不完全で不安定でしたが、今ではかなり使いやすくなっています。


2
サブリポジトリを使用するのは面倒だと思いました。それらは機能しますが、動作させるにはいくつかのフープを飛び越える必要があり、注意しないと多くの頭痛の種になる可能性があります。
ピートダンカンソン2011年

4
サブリポジトリは公式には最後の手段の機能であることに注意する価値があるかもしれません:mercurial.selenic.com/wiki/Subrepository(2013.11.12現在)
jtpereyda 2013年

3

プロジェクト全体で同じコードを使用していない場合は、別々に保管してください。これらの各プロジェクトの個人リポジトリを、ディレクトリだけ離れた場所に設定できます。必要がないのに、なぜすべてのブランチ、マージ、およびコミットコメントを混在させるのですか。

編集について:あるリポジトリから別のリポジトリにプッシュします。このtransplantコマンドはいつでも使用できます。ただし、これはすべて、2つを組み合わせたいというあなたの願望を実際に回避するものであるため、私の提案を使用すると不快に感じるかもしれません。次に、フォレスト拡張などを使用できます。

hg transplant -s REPOSITORY lower_rev:high_rev
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.