« Redmine 1.4.0 released ! | トップページ | Redmine1.4におけるNo Ticket, No Commitの強化 »

2012/04/16

Mercurialの黒魔術

Mercurialで過去のコミット履歴を改変するやり方が書かれたBlogを見つけたのでメモ。
とても面白い。
Gitも同様にできる。

【元ネタ】
Mercurialでアレを元に戻す108の方法 - TIM Labs

gitでアレを元に戻す108の方法 - TIM Labs

gitで一度行った変更をなかったことにする方法4つ - TIM Labs

TortoiseHgを入れれば、hgコマンドを叩くとすぐにMercurialをコマンドベースで操作できる。
mercurial.iniにrebase, strip, transplantなど数々のExtensionを追加すれば、いろんな操作が可能になる。

一度コミットしたリポジトリに対して、コミット履歴を改変したい理由は、マージしたものの何らかの理由で間違っていて消したかったり、元に戻したい時があるからだろう。
つまり、頻繁にマージ作業が発生する場合、一度コミットしたソースを取り消したりなかったことにしたい時がある。
すなわち、マージ作業のUndoやRedoを行うための操作に相当するだろう。

そもそもバージョン管理とは、ソース修正のUndo、Redoを行うためにソース修正履歴を保持する仕組み。
だから、マージ作業でもその考え方を適用するのはとても自然だ。
マージ作業のUndo、Redoが行えるならば、たとえ間違っても修正可能だから、自信を持ってマージできる。

これらのコマンドは一人の作業ではあまり使わないかもしれないが、マージ作業が普通に発生する場合ではとても重要になるだろう。
すなわち、trunkとリリースブランチの2本の並行開発や製品ファミリー開発のようなソフトウェアプロダクトラインでは、MercurialやGitのようにマージ作業をサポートするツールが今後必須になっていくだろうと思う。

色々試してみる。

|

« Redmine 1.4.0 released ! | トップページ | Redmine1.4におけるNo Ticket, No Commitの強化 »

廃止Mercurial」カテゴリの記事

構成管理・Git」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« Redmine 1.4.0 released ! | トップページ | Redmine1.4におけるNo Ticket, No Commitの強化 »