Contents
概要
公式サイト
Mercurial binary packages for Windows and Mac OS X
http://www.selenic.com/mercurial/release/
http://www.selenic.com/mercurial/wiki/index.cgi/BinaryPackages
関連サイト
Mercurial: The Definitive Guide
TracMercurial - The Trac Project - Trac
bpmercurial-workflow ドキュメント — bpmercurial-workflow v1.0 documentation
関連ツール
yuja / vcprompt / wiki / Home — bitbucket.org
利用プロジェクト
OpenSolaris Source Code Management at OpenSolaris.org:OpenSolarisで利用
インストール
http://www.selenic.com/mercurial/release/
tar xvfz mercurial-1.2.1.tar.gz cd mercurial-1.2.1 sudo python setup.py install
yumなら以下
yum install -y mercurial
設定
最低限の設定はだいたい以下です
コミット者情報
$HOME/.hgrc にコミット時の名前とメルアドを設定します
[ui] username = yourname <sample@sample.com>
無視ファイル設定
$HOME/.hgignoreに無視ファイルを設定します
syntax: glob *~ *.elc *.pyc *.class .svn .semantic.cache .DS_Store TAGS
拡張設定
$Id$ とかを展開する
cvsとかsvn propset とか利用して $Id$ 等のプロパティを利用している場合hgでも利用したいかもしれない。
hgextフォルダ以下にkeyword.pyが必要。
.hgrc に設定する。
全部有効にする場合は以下みたいな設定になる。
[extensions] hgext.keyword = [keyword] * =
設定したら
hg kwexpand ファイル名
として展開を指定してあげないと有効にならない。
詳細は
http://www.selenic.com/mercurial/wiki/index.cgi/KeywordPlan
http://www.selenic.com/mercurial/wiki/index.cgi/KeywordExtension
に記述がある。
色付ける
[extensions] color=
http://mercurial.selenic.com/wiki/ColorExtension
グラフログ
[extensions] hgext.graphlog=
hg glog
GUIログ
hgk で見る
http://hg.intevation.org/mercurial/file/tip/contrib/hgk
[extensions] hgk= [hgk] path="/path/to/hgk"
hg view
snej / Murky / wiki / Home — bitbucket.org
hgview (qt4 based Mercurial log navigator) (Logilab.org)
パッチ管理(mq)
[extensions] mq=
http://mercurial.selenic.com/wiki/MqExtension
http://mercurial.selenic.com/wiki/MqTutorial
Mercurial MQ について - daily dayflower
TortoiseHgでMQを使う | endflow.net blog
Diff
http://mercurial.selenic.com/wiki/ExtdiffExtension
テクニック
空ディレクトリの取り扱い
Mercurial は現状空のディレクトリをバージョン管理できません。管理したい場合ななんらかのファイルを作成しておく必要があります。
.hgignore ファイル等を作成しておくと良いでしょう。
以下みたいなツールもあります。
http://mercurial.selenic.com/wiki/MarkEmptyDirs
http://code.google.com/p/markemptydirs
ちなみに git でも空ディレクトリは取り扱えない。
本当にその空ディレクトリが必要かは検討した方が良い。
logの出力の調整
hg log -l1 で最後のログ hg log -d-1 24時間以内
[alias] l = log -r 0:tip
[extensions] hgext.pager =
ログを簡易出力にしたいならオプションに style 指定すると良い。
hg log --style=compact
毎回なら hgrcに設定すると良い
[ui] style=compact
レポジトリの分割と統合
例えば
ls -F repos .hg/ foo/ bar/
の時に foo と bar を別のレポジトリにしたいとか、もともと別のレポジトリを一つに統合したいとがあるかと思います。
hg convert --filemap
を利用します。
add してないアイルは全部消したい
たとえば configure した後にできたファイルとかを消したい場合
[extensions] purge=
で
hg clean
すれば良い
http://mercurial.selenic.com/wiki/PurgeExtension
hg push したら update してほしい
.hg/hgrc に以下を記述
[hooks] changegroup = hg update >&2
ファイル名正規化対応
Issue 1080: Problem with UTF8 filenames on OSX - Mercurial issue tracker
hook
コミットした場合等になんらかの動作を連携させたい場合「hook」を利用します。
詳細は http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html に記述があります。
.hg/hgrc
に [hooks] を追加して処理を記述すれば良いことになります。
push したら、更新されるようにする
[hooks] changegroup = hg update >&2
他のSCMからの移行
hg convert を利用します。
.hgrc に以下を追加
[extensions] hgext.convert=
Subversionからの移行
レポジトリをチェックアウトしながら変換します。変換前に変換対象の物が全部コミットされている事を確認した方が良いでしょう。
python bindingsが必要です。
http://www.open.collab.net/downloads/community/ からバイナリを取得してインストールするのが楽です。
sudo echo /opt/subversion/lib/svn-python >/Library/Python/2.5/site-packages/svn-python.pth とか sudo echo /opt/subversion/lib/svn-python >/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/svn-python.pth
python bindingsのを自力でインストールする場合は http://trac.edgewall.org/wiki/TracOnOsxNoFink が参考になります。
hg convert -s svn http://exsample.com/svn/trunk/ hoge とか hg convert -s svn file://exsample/svn/trunk/ hoge とか hg convett -s svn foo bar cd hoge hg update
ログが多いと結構時間がかかります
コマンド
hg help コマンドのようにすると英語だけど説明がでます。
レポジトリ
hg clone path |
リモートよりコピー |
hg init |
初期化 |
hg paths |
push、pull先確認 |
hg push |
パスのレボジトリに反映 |
hg pull |
パスのレボジトリより取得 |
情報
hg status |
ステータス |
hg diff file.txt |
比較 |
hg log |
履歴 |
hg annotate file.txt |
どのリビジョンでどこが変更されたか |
hg tip |
tipリビジョン |
hg parents |
いまいじってる物の親の情報 |
hg heads |
レポジトリ先端情報 |
コミット
hg add file.txt |
追加 |
hg ci -m "コメント" file.txt |
コミット |
hg remove file.txt |
削除 |
hg update |
更新 |
hg mv form to |
名前変更(copy+removeになる) |
hg revert |
先端に戻す(ローカルは削除される) |
hg revert -rREV file.txt |
特定リビジョンを取得 |
hg rollback |
最後のci,pull等を取り消し |
パッチ
hg import patch |
パッチの適用 |
hg export |
パッチ作成 |
hg incoming |
pullされるファイル |
hg outgoing |
pushされるファイル |
hg fetch |
pull+update+merge |
タグ・ブランチ
hg copy from to |
コピーする |
hg tags |
タグ一覧 |
hg tag タグ名 |
タグ付与 |
branchの考え方とかは以下が詳しい Mercurial 勉強中 (6) - named branch と update -C - daily dayflower
Emacs
aHg
aHg: An Emacs front-end for the Mercurial SCM
agriggio / aHg / source – Bitbucket
微妙に変な所があるけれどシンプル
monky
https://github.com/ananthakumaran/monky/blob/master/monky.el
mvc.el
インターフェースが独特だったり、colorの変更に追随していなかったりしている
DVC.el
DVC: Distributed Version Control for Emacs
DVC - Distributed Version Control for Emacs
初期設定だと微妙だったのでいろいろ変更すると良いのかもしれない
Trac連携
CentOSにTrac+TracMercurialをインストールする - Knowledge Database IT
SVN との連携
pip install hgsubversion もしくは hg clone http://bitbucket.org/durin42/hgsubversion/ ~/hgsubversion
Git との連携
sudo easy_install -UZ hg-git もしくは sudo env ARCHFLAGS='-Os -arch i386 -arch x86_64 -arch ppc -fno-common' easy_install -UZ hg-git
.hgrc に以下を記述
[extensions] hggit=
動作確認。開発者のテスト用レポジトリを clone
hg clone git://github.com/schacon/munger.git
Gitのブランチつけたい場合は、以下を書いて、hg のbookmark を付けると Git のブランチに変換される。
[extensions] hgext.bookmarks=
例えば以下のようにする
hg bookmark -r default master hg bookmark -r 0.01 0.01-git
付与した bookmark は以下のコマンドで参照できる。
hg bookmarks
ブックマークはブランチと同名にできない物と思われる
x.zpuppet.org » mercurial bookmarks
Eclipse
Mac で SSH認証が上手く通らない場合は以下を利用する
Josh (Formerly) In Antarctica: Mercurial Push from IntelliJ
XREAとかSakraとかにインストール
www.horaguchi.net - tako3 のソースは今まで、Free Subversion Hosting の Unfuddle に上げてたんだけど、
python setup.py install --home=~
共有サイト
Mercurial hosting — bitbucket.org:無償
参考サイト
Quick, easy-to-understand tips for using Mercurial / hg tip
steps to phantasien t(2007-05-19) Mercurial で手軽な共有レポジトリをつくろう
XREA FREE で Mercurial を - miau's blog?
XREAでMercurialをインストール | Sarabande
JapaneseCGI Install - Mercurial
Greenbear Laboratory - Mercurialを使ってみよう