secretbase.log

コードはすべてNYSLです

TortoiseHgを使って歴史改変をはじめよう(strip)

TortoiseHg Advent Calendar 2012 - connpass 9日目のエントリになります。

今日は、いよいよMercurialの真価である歴史改変をはじめてみましょう。歴史改変というと難しいイメージですが、まずは手始めにコミットしたリビジョンを無かったことにすることからはじめましょう。

Mercurialのコマンドでいうと strip コマンドを使います。 strip という名の通り、枝の刈り取りです。リビジョンツリーを木に見立て枝を刈り取りましょう。

準備

strip を使えるように、エクステンションで mq を有効にします。

f:id:cointoss1973:20121210210259p:plain

削除方法

それではさっそく削除しましょう。
削除したいリビジョンを選択し、右クリックを押します。右クリックメニューの中にあります。

f:id:cointoss1973:20121210210316p:plain

リビジョンを選択し、右クリックで一番下と覚えるといいでしょう。

削除したリビジョンはどこに?

.hg/strip-backup/ 以下に ハッシュタグのファイル名で残っています。

例)

$ ls .hg/strip-backup/
5d7b4b814828-backup.hg

strip-backup から戻すことができます。

残念ながら、TortoiseHg上からの操作では、戻すことはできませんが、hg unbundle コマンドを使うことで戻すことができます。

hg bundle / unbundle については、 こちらのエントリで言及されています。 Mercurialのバンドルファイルを扱う #mercurialjp - 放牧日記

さいごに

いかがでしたでしょうか。エクステンションで有効にした mq が Mercurialの歴史改変のすべてといって過言ではないでしょう。mq を有効にし、まずは strip から歴史改変をしてみてはいかがでしょうか。