魔術師見習いのノート

プロフィール

魔術師見習い
Author魔術師見習い-_-.
Twitter魔術師見習い

コンピュータ関係のメモを主に書きます.

MENU

Mercurial 個人利用

投稿日:
タグ:

目次

個人で利用する場合のMercurialについてのまとめ.

用語

リポジトリ
Mercurialで管理された空間.
リビジョン
バージョン
チェンジセット
遡ることのできるポイントのこと.
コミット
新しいリビジョンを作ること.
tipリビジョン
tip
リポジトリにおいて最近追加されたリビジョン.もっとも最近修正されたヘッダ.
ヘッド
子リビジョンを持たないリビジョン
マージ
複数のリビジョンを合併.各リビジョンの異なるファイルに関する変更や同一ファイルの異なる変更を全て反映させる.
衝突
Mercurialが整合性を保ったまま複数のリビジョンを統合できない状態(例:複数のリビジョンで同じ箇所に異なる変更をした場合).
衝突の解消
解消
衝突している箇所に対し変更内容を指定すること.
タグ
リビジョンの名前のこと.1つのリビジョンにタグは複数付けられる.
ブランチ
2つの子リビジョンを持つ親リビジョンがいる時,その親リビジョン以降

基本コマンド

用途コマンド名別名注釈
リポジトリの初期化.init
管理対象として登録.add
ファイル名を変更.rename登録されたファイルの名前を変更.mvで変更するとMercurialで管理されなくなる.
管理対象から削除.removerm以前までの記録は残る
リビジョン情報を表示.loghistory"-v"で詳細な情報を表示.表示結果の見方は「ログ情報」で.
ファイルの状態を確認.statusst状態の種類
コミット.commitci
作業領域を任意のリビジョンのものに変更.update
  • up
  • checkout
  • co
リビジョンを指定しなければ最新のリビジョンへ
各コマンドのヘルプを表示.help何も指定しなければhgについて.コマンド名を指定すればコマンドについてのヘルプ."hg -v help"の方が詳細.

便利なコマンド

用途コマンド名別名詳細
パターンに一致する管理対象のファイルを表示.locate
  • パターンを指定しない場合,管理対象のファイル全て.
  • リビジョン番号を指定しない場合,現在の作業領域が対象.
あるファイルをあるリビジョン時点のものに更新.revertリビジョンを指定しない場合,親リビジョン("hg parent")が選ばれる.
リビジョンにタグを付ける.tag複数のタグを指定できる.
ファイルの複製.copy複製後のファイルは複製元のリビジョンの履歴を持つ.
2つのリビジョンのファイルの差分を表示.diff1つのリビジョンを指定した場合,指定リビジョンと作業領域間の差分が,何もリビジョンを指定いない場合, 作業領域とその親リビジョン間の差分を表示.
あるリビジョンのファイルの中身を表示.cat
あるパターンに一致するファイルやリビジョンを検索.grep特に指定がない場合,最初に合致したリビジョンのみ,"--all"を指定した場合,全てのリビジョンから検索.
リビジョンを圧縮して取り出し.archive圧縮形式は出力ファイル名から自動判定されるが,-tや--typeで指定可能.
1つ前のコミットを取り消し.rollback1段階限り取り消せる(commitやpushなど).Mercurialでは普通取り消さずに分岐させる.
ファイルの修正時期の確認.annotateblameバイナリには使用できない.

分岐関連コマンド

用途コマンド名別名注釈
  • 現在のブランチ名を表示.
  • ブランチ名の設定.
branch名前を指定した場合は,現在のブランチ名を設定,それ以外の場合は,現在のブランチ名を表示.
現在のブランチを閉鎖.現在のブランチを閉鎖する場合,commitコマンドの引数--close-branchを使用.
マージ.merge
  • マージ対象リビジョンの指定が無く,作業領域の親リビジョンがヘッドで,且つ現行ブランチがもう1つだけヘッドを持つ場合,そのヘッドがマージ対象.
  • 衝突未解消なファイルは "hg resolve"での衝突解消が必要です。
マージ状態の管理.resolve詳細は「衝突解消」で.

衝突解消

引数1引数2説明
-l--listマージの必要なファイルの解消状態一覧.
-m--mark当該ファイルを衝突解消済みに設定.
-u--unmark当該ファイルを衝突未解消に設定.

複数のリポジトリ

用途コマンド名別名注釈
リポジトリ全体の複製.clone
  • コピー先のリポジトリのdefault変数にコピー元のパスが代入される("hg paths"で確認).
  • コピー先に指定可能なパスは,ファイルシステム上のパスと"ssh://"形式のurl.
他リポジトリから自リポジトリへ差分複製.pull引数として複製元のリポジトリのパスやURL,パスのエイリアス名を与える.
自リポジトリから他リポジトリへ差分複製.push
  • 特に指定がなければ複数のヘッドが作成される処理は反映されない(-fで変更可能).
  • 引数として複製先のリポジトリのパスやURL,パスのエイリアス名を与える.

状態確認関連コマンド

用途コマンド名別名注釈
全てのヘッドのログを表示.headsパラレルワールドがあるか確認可能.
作業領域の概要を表示.summarysum
  • 現在のブランチ名を表示.
  • ブランチ名の設定.
branch
作業領域か任意のリビジョンの親リビジョンのログを表示.parents
リポジトリ内の全てのタグ名を表示.tags
tipリビジョンのログを表示.tip
リポジトリの整合性を検証.verify
リビジョンの識別情報を表示.identifyidリビジョンを指定しなかった場合,現在の作業領域.
リビジョン情報を表示.loghistory"-v"で詳細な情報を表示.表示結果の見方は「ログ情報」で.
ファイルの状態を確認.statusst状態の種類

ログ情報

user% hg log
チェンジセット:   2:c2ed88952439
タグ:             tip
ユーザ:           user
日付:             Sun Oct 28 23:21:54 2012 +0900
要約:             3rd check

チェンジセット:   1:06cc1925b446
ユーザ:           user
日付:             Sun Oct 28 23:21:13 2012 +0900
要約:             second check

チェンジセット:   0:2aa333d966d3
ユーザ:           user
日付:             Sun Oct 28 23:20:40 2012 +0900
要約:             first check

引数にファイル名やディレクトリ名を指定した場合,そのファイルやディレクトリ以下のファイル名のリビジョンを表示する.
フィールドfield説明
チェンジセットchangesetリビジョン番号とハッシュID
タグtagタグが付いていればタグ
ユーザuserユーザ名
日付dateコミットを実施した日付
ファイルfilesファイル一覧
要約summaryコミットメッセージの1行目
説明descriptionコミットメッセージ

ファイル状態

user% hg status -A
M hoge.html
? foo.html
C fuga.html
C piyo.html
状態マーク表示対象引数1引数2
A登録対象-a--added
?未登録-u--unknown
M修正
C無修正-c--clean
R除外-r--removed
!削除-d--deleted
I無視-i--ignored
(空白文字)複製元-C--copies

設定ファイル

Mercurialには,hgrcや.hgrcという名前の設定ファイルがある.詳細は,"hg help -v config"で表示できる.

設定ファイルは,セクション名([と]で囲われた文字列)とセクションから構成される.以下にセクションの例をいくつか示す.

ui
ユーザインタフェースに関する設定.項目は"hg help -v config"で確認できる.
username
ユーザ名
editor
エディタ名
ssh
sshコマンド
[ui]
username = user
editor = vim
ssh = ssh -p 10022
encode
ファイルパターンとそれに使用する圧縮コマンドの指定.
[encode]
*.tar.gz = gzip
*.tar.bz2 = bzip2
paths
リポジトリへのシンボリックな名前を設定.
[paths]
hoge = /home/user/work1
fuga = ssh://user@test:22/work2
いくつかのコマンドは,defaultやdefault-pushなどのエイリアス名を設定する.設定されたパスはpathsコマンドで確認可能.
alias
コマンドのエイリアス名を設定.
[alias]
ls = locate

一覧