Mercurialの黒魔術
Mercurialで過去のコミット履歴を改変するやり方が書かれたBlogを見つけたのでメモ。
とても面白い。
Gitも同様にできる。
【元ネタ】
Mercurialでアレを元に戻す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のようにマージ作業をサポートするツールが今後必須になっていくだろうと思う。
色々試してみる。
| 固定リンク
「廃止Mercurial」カテゴリの記事
- GitHubはオープンソースのプロセスを標準化した(2015.06.11)
- 「反復型ソフトウェア開発」はソフトウェア工学の良書(2013.02.09)
- Mercurialに取り込まれたコミュニティ由来の機能一覧(2013.01.12)
- WordやExcelから直接Mercurialへコミットできるアドオンmsofficehg(2012.12.07)
- RedmineでSubversion リポジトリ表示を高速化する方法(2012.11.23)
「構成管理・Git」カテゴリの記事
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
コメント