2016年9月3日土曜日

Mercurialのhg histeditでやらかした時、unbundleで元に(近い状態に)戻す

概要

Mercurial (以下hg)には、履歴を改編する為のhisteditという拡張がある。

履歴を見易く綺麗にするには便利なのだが、うっかり「やらかして」しまったので、その顛末について残しておく。

やらかした内容


  • 関連のあるchangesetをまとめるためにhg histeditを実行した
  • 順序を変える必要があるのを忘れてうっかりeditor (vim)を終了
  • commit logの変更に進んでしまい、そこで:q!を実行してabortしたつもりがhisteditが実行された

復旧の手順


  • hg unbundleを使い、histeditを実行した際に保存されているbackup (bundle file)から復旧する
  • 実行するとheadsが2つに増えた。この状態でhisteditは使えないので、一旦rebaseして履歴をlinearにする
  • histeditを改めて実行して、commitを意図した順に並び換えた上で、不要なcommitをdrop

最後に


  • やらかしても慌てない
  • 自動backupと、hg unbundleは救世主 (間違ってstripした場合とかも戻せる)


0 件のコメント:

コメントを投稿