1

親リポジトリ A があります。

hg-convert を使用して別のチームがアクセスできるように、厳選されたサブフォルダーの小さなリストを含む、親リポジトリの小さな子リポジトリ B を作成しました。

hg convert A B --filemap filemap.txt

filemap.txt は名前の変更を行いません。フォルダーのみを含めたり除外したりします。そのような:

exclude *
include folder1
include folder2/subfolder1
include folder2/subfolder2
include folder2/subfolder3
exclude folder3_that_was_pulled_in_for_some_reason

AからBへの変換はうまくいきます。また、hg convert コマンドを再実行して、A から B への後続の変更を「プッシュ」することもできます (ここでは、プッシュという用語を大まかに使用しています...)

しかし、変更を B から A に「プッシュ」したい場合はどうでしょうか。ファイルマップなしで hg convert BA を実行すると、B のすべてのコミットが A に再作成されるため、A に重複したコミットが大量に存在します。

将来的に A と B を同期させる合理的な方法はありますか? A と B に異なる順序で変更を適用すると、おそらく不可能でしょうか?

4

1 に答える 1

2

これを行う良い方法はありconvertません。そのため、双方向ワークフローの一部にすべきではありません。段階的に使用することは可能であるconvertため、A から B に何度も移動できますが、B から A に移動することはできません。B から A にパッチを適用することもできhg exportますhg importhg convert再び B に入ると、それらは 2 倍になり、マージはおそらく難しくなります。

リポジトリ全体のサブリポジトリとして公開されているものを使用して、リポジトリを 2 つの個別のリポジトリに分割することを検討してください。

/projectname
    stuff.txt
    /folder1
    /folder3_that_was_pulled_in_for_some_reason
    /projectname-public
        /folder2/subfolder1
        /folder2/subfolder2

がサブリポジトリの場合projectname-publicは、個別にクローンを作成して個別にリリースでき、プル リクエストを取得してパッチを適用し、それらを簡単にマージできます。

サブレポは初心者向けではありませんが、 を往復するよりは簡単ですconvert

于 2013-10-12T02:24:30.743 に答える