Mercurialでのブランチの使い方がわかりました

ちょっと前に友人から入門Gitを安く譲ってもらったんですけど,そっちも読みつつ,結局いつもはMercurialを使っています.2年くらい前に,Subversionから移行して,そのままなんですよね.基本的にはGitに移行したいんです.でも,そもそも私がバージョン管理システムに求めるのは,複数の計算機で作業するときにちゃんと同期してくれることと,履歴を取っておいてくれることくらいなんで,GitとかMercurialみたいな大袈裟な機能は要らないのかもしれない.

入門Git

入門Git

と言いつつ,入門Gitを読んで思ったのは,とりあえずブランチをちゃんと使ってみようということでした.ブランチのユースケースで挙げられっていたのが,

  • 問題点はそれぞれブランチを切って作業する
  • ある作業の途中で,急に他のが気になったときなんかに,ブランチを切り替える
  • それだけで,それぞれの作業がごっちゃにならなくて幸せ

みたいな感じなんですが,これは良さげに見える.

さすがにそのためだけにGitに乗り換えるのはダルいので,Mercurialでブランチをどうするのか調べます.

マニュアル(いつのまにかMercurialのページがかっこよくなってますね)を読むといろいろ書いてあるんですが,だいたい次のような手順で良いみたい.

まず,ブランチを新しく作成する

$ hg branch new-branch-name

ブランチ一覧で確認します.

$ hg branches

ちなみに現在のブランチを確認するのは,

$ hg branch

ブランチを切り替える

$ hg update branch-name

もし未コミットの変更があると,mergeしようとしちゃうので,commitしておくか,

$ hg update -C branch-name

とします.

他のブランチの変更を取り込む

$ hg merge other-branch

みたいな感じ.

mergeされていないブランチを見るには,

$ hg heads

します.

$ hg branches

したときに,たまに(inactive)とか出るやつがあって,不愉快ですが,それはheadsが無いブランチのことです.

ブランチを消す

作業が終ったら(つまりブランチの内容を全てmergeしたら,)ブランチをcloseします.

$ hg commit --close-branch

closeすると,hg branchesで出てこなくなります.ところでopenするのはどうするんでしょうね?

さて,問題はhg headsで,close-branchしたcommitが残るので,headsでclosedなブランチが出てきて嫌な感じです.とりあえずmergeすれば消えますが,なんとかならんのでしょうか.