Mercurial Parallel World

このエントリは、Mercurial Advent Calendar 2013 の21日目です。
いわゆる歴史改変ネタです。

追記
TortoiseHg の独自機能 〜 履歴の圧縮 - 彷徨えるフジワラ でやりたいことが出きていました/(^o^)\

皆さん、適切なタイミングでコミットできているでしょうか。僕はできません。よしコミットだ! と実行すると何故かコミットされていなかった過去の変更内容とごちゃまぜ状態になります。わりとよく。
最近は開き直って hg now で気にせずコミットして後から手を加えることもしばしば。(別物の hg now もあるらしいのですが、どこにあるんでしょ?)
その際の方法としては hg histedit を使ったりするわけですが、案外面倒なんですよね、あれ。
ということで、場合によってはこういう方法も便利かもしれないよという紹介です。

こんな感じでコミットされている状態のリポジトリがあるとします。

コマンドプロンプトで、

hg up 1
hg diff -r .::tip | hg import --no-commit -

これで現在のリビジョンから、最新のリビジョンまでの変更内容が適用された状態になります。
あとは1コミットにまとめたい変更にチェックを付けてコミットを繰り返します。

元のコミットが不要だったら strip でもしてください。

TortoiseHg で完結しないのはイケていないし、hg diff 〜 のところは何かコマンドあるじゃないかという気もしています。
Multiple Head になるので Parallel World というタイトルにしてみましたが、わかりにくすぎますね。