mv
とhg addremove --similarity 100
の手順はhg rename
を使用して簡略化することができますが、ブログポストは基本的な方法です。
基本手順:
- 新しいリポジトリを作成します。
- 古いリポジトリの1つを強制的にプルします。
- ヒントを更新し、古いリポジトリファイルの名前を新しい場所に変更します。
- コミット
- 他のレポジトリでは2-4を繰り返します。
- すべてをまとめてください。
例:
hg init rinjani
cd rinjani
hg pull -f <path_to>\rinjani-a
hg update tip
md rinjani-a
hg rename * rinjani-a
hg ci -m "renamed rinjani-a"
<repeat for other projects>
そして一緒にヘッドの各々を "HGマージ"。
もちろん、すべての変更操作は新しいリポジトリに対してのみ行われるので、これは完全に安全です。間違えた場合は、いつでもやり直すことができます!
@ 5:renamed rinjani-c files
|
o 4:rinjani-c file
o 3:renamed rinjani-b files
|
o 2:rinjani-b file
o 1:renamed rinjani-a files
|
o 0:rinjani-a file
次にヘッド(REV 1、3、およびこの場合は5)をマージ:
はここで非常に簡単なグラフは上記のスキームを使用してマージされる3つのリポジトリを準備した後のように見えるかもしれないものです。キーポイントは、それらを一緒にマージする前に独立した履歴の頭を変更することです:
@ 7:Merge
|\
| o 6:Merge
| |\
| | o 5:renamed rinjani-c files
| | |
| | o 4:rinjani-c file
| |
| o 3:renamed rinjani-b files
| |
| o 2:rinjani-b file
|
o 1:renamed rinjani-a files
|
o 0:rinjani-a file
は、[OK]を、 'md'は' mkdir'の別名である、私は考えますか? 'hg rename * rinjani-b'は、' rinjani-b'の中で 'rinjani-a'を動かすので、他のreposのためにステップ2-4を繰り返す際に問題があります。また、最後に各レポに複数のヘッドがある場合、どのレポをマージする必要がありますか?先端? –
@GlennMohammad各リポジトリの 'hg pull -f'を実行すると、マージなしの独立履歴として表示されます。最後まで頭を合併させないでください。 'hg rename * rinjani-b'は' rinjani-a'ファイルを表示しません。すべての履歴が最終的な場所にリネームされたら、それぞれのヘッドをまとめます。 rinjani-bの履歴をrinjani-aに、次にrinjani-cをその結果にマージします。 –
'md'と' mkdir'は同等です...少なくとも私が使っているWindowsでは。 –