夜行録 - 酔歩.net

日暮れて道遠し さらに夜道を行く もって夜行録と名付く

HG リポジトリ再構築

昔、構築した 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,...だった。 ややこすい。

まあ、たまに微妙に conflict したりもするんだが patch がコケないように小細工しつつ import。 export/importの利点は、 commit log, author, dateなどがみんな移植できることだな。

最後に、新規リポジトリの.hg/を今までのものと差し替えて一見終了。適宜 revert するなりして working copy を同期。

2008年10月17日 (Fri) - 18:00:14 - その他雑記 - 3936x - permalink
Karma points: -2. Do you like this article? [yes/no]