推定無題

日々調べたこととか

Mercurialのコマンド

以下のサイトを参考にしています。

Mercurial(hg)のコマンド一覧
http://d.hatena.ne.jp/Kenji_s/20110203/1296696735

書籍
入門Mercurial 著:藤原 克則
著者のサイト
http://www.lares.dti.ne.jp/~foozy/fujiguruma/scm/mercurial.html

私的に頻繁に使うコマンドやオプションに絞っています。
他にも沢山あるので、他のサイトやヘルプを参照してください。

参考サイトに習い、省略できるコマンドは()内で示します。



ヘルプ

hg help [コマンド名]

指定したコマンド名のヘルプを表示。
コマンド名を省略した場合は、コマンド一覧を表示。



初期化

hg init [パス名]

指定したディレクトリにリポジトリを作成。
パスが省略された場合は、カレントディレクトリにリポジトリを作成する。



コミット

hg commit(ci) [option]

リポジトリにコミットする。

-m コメントを付ける
-A リポジトリに登録されていない新規ファイルは追加し、無くなったファイルはリポジトリ登録から除外される


新規ファイルは追加し、無くなったファイルは管理から除外してコミットする。

> hg ci -A -m "コメント"



ファイル操作

実際には、ファイルを個別に登録や削除は面倒くさくって、コミット時に-Aオプションで済ませてしまう。

追加、削除、管理から除外

hg add [ファイル名]
hg remove [ファイル名]
hg forget [ファイル名]

ファイル名を変更、ないし移動する

hg rename 変更前 変更後

複製

hg copy(cp)

ただファイルを複製するだけでなく、自動的に変更も反映される。
詳しくは下記参照。

Mercurialのcopyコマンド
http://d.hatena.ne.jp/Kenji_s/20110209/1297238664

指定ファイルの変更箇所を表示

hg diff(di) [option] ファイル名

option

-r リビジョンを指定する
-c 指定チェンジセットでの変更箇所

リビジョン指定は複数回できる。数に応じて比較対象が異なる。
指定しない場合は、作業領域の前のリビジョンと比較。
1つ指定の場合、作業領域と指定リビジョンの比較。
2つ指定の場合は、指定されたリビジョン間での比較。

> hg di -r 2 -r 4 ファイル名


TortoiseHGを使ってたら、このコマンドはあまり使わない…。



リポジトリ操作

リポジトリを複製する。

hg clone SOURCE DEST

複製されたリポジトリには、連携先としてSOURCEが設定される。
複製されたリポジトリで、pushを行うと、追加されたチェンジセットをSOURCEへ追加される。

複製されたリポジトリのチェンジセットを複製元へ追加する

hg push [option]

ヘッドやブランチが増える場合、処理は失敗(中止)する。強行する場合は -f オプションを付ける。

複製されたリポジトリにないチェンジセットを複製元から取り込む

hg pull [option]

option

-u pull後、最新tipへupdateされる
-f 強制
-r 指定リビジョンまでを取り込む

pullされるチェンジセットがあるか確認する

hg incoming(in)

pushするチェンジセットがあるか確認する

hg outgoing(out)



タグ

タグの一覧を表示

hg tags

タグを付ける

hg tag [option] タグ名

option

-r チェンジセットを指定
-l ローカルタグとして作成
-f 同名のタグが既にあっても置き換える
-m メッセージコメント
--remove 削除する


タグ名を付けると、自動的にチェンジセットが追加される。

> hg tag "タグ名" -m "コメント"


同名タグは付けれず、中止される。強制オプションで置き換えれる。

> hg tag "タグ名"
abort: tag 'タグ名' already exists (use -f to force)
> hg tag -f "タグ名"


タグを削除するには--removeオプションを使う

> hg tag --remove



ブランチ

ブランチ一覧を表示

hg branches

ブランチを作成する

hg branch ブランチ名

ブランチ名を省略した場合は、現在の作業領域のブランチ名が表示される。

ブランチをクローズする

> hg ci --close-branch -m "Close bad branch, this approch never worked!"

hgでは表示上見えなくなるだけで、完全削除はできない。

ブランチを移動する

updateを使う。

> hg update "ブランチ名"



マージ

マージする

hg merge [リビジョン、タグ、ブランチ名など]


作業領域と指定したリビジョンとをマージする。
リビジョン2と3がヘッドで、tip=3の時に、2を3へマージする

hg merge 2


リポジトリにヘッドが2つだけで、一方が作業領域の親リビジョンである場合、対象指定は省略できる。

hg merge



ヘッド

ヘッドとは、リポジトリでの最新チェンジセットの事で、ブランチを分けている場合、マルチヘッド状態になる。
(枝分かれした先に、多少内容が異なるファイルがそれぞれある状態)
マルチヘッドになったら適宜マージする(もちろんしなくても良いが)

ヘッドの一覧を表示する

hg heads

指定ブランチのヘッドを表示するには、ブランチ名を引数に入れる。

> hg heads "ブランチ名"



ロールバッグ

hg rollback

リポジトリに対する直前の操作を取り消す。
取り消せるのは

  • hg commit
  • hg import
  • hg pull
  • hg push (push先でhg rollbackする)
  • hg tag
  • hg unbundle



アーカイブ作成

hg archive [option] [パス名]

option

-t ファイルタイプを指定。
-r リビジョンを指定する。ブランチ名やタグ名でも可。

ファイルタイプは以下

files アーカイブせず展開された状態
tar tar
tbz2 tar.bz2
tgz tar.gz
uzip zip(圧縮なし)
zip zip(圧縮あり)


またパス名には置換指定ができる

%% %文字そのもの
%H リビジョンのハッシュID(40桁)
%N 出力対象数
%R リビジョン番号
%b リポジトリのベース名
%h リビジョンのハッシュID(12桁)
%n 0詰めされた、1から始まるシーケンス番号
%r 0詰めされた、リビジョン番号


現在のチェンジセットをアーカイブ化する

> hg archive -r tip -t zip ..\archive-%b-%R-%h.zip

..\archive-test-2-87f5f92876a1.zipが作成された(もちろん環境によって値は違う)
アーカイブの中は\archive-test-2-87f5f92876a1フォルダがあり、その中にリポジトリに登録されているファイルが入っている。



情報

作業領域のファイル状態を表示する

hg status(st) [option]

option

--rev REV 指定したチェンジセットとの更新差分を表示
--change REV 指定したチェンジセット時点での更新状態を表示

他にも沢山あるのでヘルプ参照。

状態識別子

M 改変有り(Modified)
A 追加予定(Added)
R 除外予定(Removed)
C 変更無し(Clean)
! 管理対象にも関わらず作業領域にファイルが無い(missing)
? 管理対象外(unknown)
I 無視(Ignored)

チェンジセットの変更履歴を表示する

hg log [option]

option

-k 検索文字 キーワード検索。合致したチェンジセットのみ表示
-r リビジョン指定(複数回可能)
-l 数字 表示数を制限する
-b ブランチ名 指定ブランチのチェンジセットのみ表示
-m マージしたチェンジセットのみ表示

最新チェンジセットから5回前までを表示

hg log -l 5

最新チェンジセットの情報のみを表示する

hg tip

Mercurial管理下のファイル一覧を表示する。

hg manifest [リビジョン]

リビジョンが無指定の場合、作業領域の最新チェンジセットが対象。




管理下のファイルの内で、パターン検索したい場合は

hg local [option]

を使う(詳しくはヘルプ参照)



設定情報の確認

hg showconfig

設定ファイルは、以下の場所にある。と思う。

インストール毎設置

UNIX

etc/mercurial/hgrc.d/*.rc
etc/mercurial/hgrc

Windows:

インストール先\Mercurial.ini

ユーザー毎設定

UNIX

~/.hgrc

Windows:

%HOME%\Mercurial.ini
%HOME%\.hgrc
%USERPROFILE%\Mercurial.ini
%USERPROFILE%\.hgrc

リポジトリ毎設定

リポジトリフォルダ傘下の

.hg/hgrc



Mercurialのバージョン表示

hg version

> hg version
Mercurial Distributed SCM (version 2.1.1)
(see http://mercurial.selenic.com for more information)

Copyright (C) 2005-2012 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY of FITNESS FOR A PARTICULAR PURPOSE.