昔、構築した HG のリポジトリだが、気がつくと
diff で抽出して持ってきて適当に commit しているうちに、大分 patch が当たらなくなってきた。
というか、微妙にみんな違う環境なものだから、当ててもいい差分、当たらなくてもいい差分が判らなくなってきた。
とりあえず全部の環境で hg log して結果を集めてきてワープロ上で表にまとめてみる。
commit log は、他所に持っていった場合 original のを使い廻すようにしているので、それを頼りに時系列が辿れる。同期を合わせながら revision 番号と commit log を表に書いていくと、なんとなくどこで生成した差分を他所に波及させたか見えてくる。
この表を見ながら、各環境からそこで発生した original な差分を hg export で抽出し、一つのホストに集約する。 rsync で upload と download の繰り返し。今度は各環境で、新規の hg のリポジトリを作成し、表を参考に、その環境に当てる差分を時系列を辿って当ててゆく。
例えば、ホストAでは、 host_A_rev0, host_C_rev2, host_D_rev2, host_A_rev3, host_C_rev5,...と当たっていたことが表から読み取れたので、その順に、新規リポジトリに import してゆく。
ちなみに、ホストCでは、 host_A_rev0, host_C_rev1, host_C_rev2, host_C_rev3, host_D_rev2, host_C_rev5,...だった。
ややこすい。
最後に、新規リポジトリの.hg/を今までのものと差し替えて一見終了。適宜 revert するなりして working copy を同期。