Mercurial

最近気になってたMercurialについて調べてみた.

Mercurialとは

Mercurial SCM
分散ソースコード管理ツール複数人で別々に開発するときにソースコードを管理するためのツール.とは言うものの,1人で開発するときでもかなり使える.

基本的な用語

まずソースコード管理ツールでよく使われている用語を知る必要がある.

  • リポジトリ(repository)
  • チェックアウト(checkout)
  • チェックイン(checkin)
  • トランク(trunk)
    • メインの開発用リポジトリ
    • トランクにチェックインするときは細心の注意を要する
    • マスターブランチとも言う
  • ブランチ(branch)
    • リポジトリを分岐させること
    • 実験的な変更を加えたい時などにブランチを作成する
    • ブランチを作成することをブランチを切るという
    • ローカルリポジトリとも言う
  • ヘッド(head)
    • 最新のコミット
    • mercurialではtipと言う

導入

詳しくは書かない代わりに良記事へのリンクを貼っておく.適宜参照されたい.とりあえず上2つに目を通せば大体Mercurialについてわかると思う.下2つはSCMの背景についても触れてあるので,読むと理解が深まる.

サブコマンド

  • hg init
  • hg version
    • バージョンを表示
  • hg help
  • hg showconfig
  • hg status
  • hg log
    • コミットログとか表示
  • hg clone repoA repoB
    • repoAをrepoBに複製
  • hg clone ssh://hg@bitbucket.org/user_name/branch_name
  • hg add file
  • hg commit
    • -m STRING でメッセージ追加
  • hg push
    • コミットをリポジトリに反映させる
    • 「中止: 無関係なリポジトリです」とでて反映できなかったら, hg push -h とすれば解決する(場合がある)
  • hg pull repo
  • hg update
    • 作業領域を更新する
  • hg merge
  • hg revert
    • 前のバージョンに戻す
  • hg checkout
    • 前のバージョンを取り出す

他にも,hg diff, annotate, remove, incoming, outgoing, export, import, serveがある.

設定

  • 全体の設定 /etc/mercurial/hgrc
  • ユーザの設定 $HOME/.hgrc
  • リポジトリごとの設定 .hg/hgrc
  • 無視したいファイルの設定 .hgignore に書く

とりあえず $HOME/.hgrc は次のようにしてる.

[ui]
username = xxxxxxxxx < yyyyyyyy@zzzzzzzzz >
merge = internal:merge
ssh = ssh -C

[web]
allow_push = *