[HOME]: [Mac OS X]: [MacPython]: [Emacs]: [生存報告記]:

Mercurial

目次

概要

MercurialからGitへの移行:MercurialToGit

確認中事項

公式サイト

関連サイト

関連ツール

GUI クライアント

Mac、Win、Linux

Mac、Win

Mac

参考

plugin 等

利用プロジェクト

OpenSolaris Source Code Management atOpenSolaris.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

参考:Pythonで分散バージョン管理

設定

最低限の設定はだいたい以下です

コミット者情報

$HOME/.hgrc にコミット時の名前とメルアドを設定します

[ui]
username = yourname <sample@sample.com>

無視ファイル設定

$HOME/.hgignoreに無視ファイルを設定します

syntax: glob
*~
*.elc
*.pyc
*.class
.svn
.semantic.cache
.DS_Store
TAGS

拡張設定

UsingExtensions -Mercurial

$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=

# 状態確認
hg qseries
# 差分確認
hg qdiff

http://mercurial.selenic.com/wiki/MqExtension

http://mercurial.selenic.com/wiki/MqTutorial

Daily Hacking: HGMQ

Mercurial MQ について - dailydayflower

TortoiseHgでMQを使う | endflow.netblog

Diff

http://mercurial.selenic.com/wiki/ExtdiffExtension

mercurialのマージ作業をvimで -ろじぼ

テクニック

空ディレクトリの取り扱い

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 issuetracker

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=

cvs

とりあえずチェックアウト

csv -d /path/to/xxx checkout -P YYYY

「-d」でCSVROOTのある場所を指定、「-P」でレポジトリ名を指定

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

ログが多いと結構時間がかかります

Git への変換

Convert a Mercurial Repository to Git Using hg-fast-export - DZoneIntegration

コマンド

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 MercurialSCM

agriggio / aHg / source --Bitbucket

微妙に変な所があるけれどシンプル

マージをコマンドラインからしたい場合は以下とか利用

https://github.com/knu/emacsc

monky

https://github.com/ananthakumaran/monky/blob/master/monky.el

mvc.el

wac's webpage./mvc.el

インターフェースが独特だったり、colorの変更に追随していなかったりしている

DVC.el

DVC: Distributed Version Control forEmacs

XSteve's Emacs DVC.el page

DVC - Distributed Version Control forEmacs

初期設定だと微妙だったのでいろいろ変更すると良いのかもしれない

Trac連携

CentOSにTrac+TracMercurialをインストールする - Knowledge DatabaseIT

SVN との連携

pip install hgsubversion
もしくは
hg clone http://bitbucket.org/durin42/hgsubversion/ ~/hgsubversion

Git との連携

Hg-Git Mercurial Plugin

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 » mercurialbookmarks

Eclipse

Mercurial Eclipse

Mac で SSH認証が上手く通らない場合は以下を利用する

Josh (Formerly) In Antarctica: Mercurial Push fromIntelliJ

XREAとかSakraとかにインストール

www.horaguchi.net - tako3 のソースは今まで、Free Subversion Hosting の Unfuddle に上げてたんだけど、

python setup.py install --home=~

共有サイト

Mercurial hosting --- bitbucket.org:無償

Secure, Simple, Affordable Source Hosting - SourceRepo - Git Hosting,Subversion Hosting, Mercurial Hosting:有償

参考サイト

Quick, easy-to-understand tips for using Mercurial / hgtip

steps to phantasien t(2007-05-19) Mercurialで手軽な共有レポジトリをつくろう

satolog: Mercurial と Tracのメモ

XREA FREE で Mercurial を - miau'sblog?

XREAでMercurialをインストール |Sarabande

JapaneseCGI Install -Mercurial

Greenbear Laboratory -Mercurialを使ってみよう

BitBucket で無料ホスティング / hgtip

Mercurialでアレを元に戻す108の方法 - TIMLabs

Mercurial初心者が絶対にブックマークすべきページ - ゲリラ的 uncorrelatedウェブ・テクニカル・ノート

Git使いがMercurial使いに転職するとき設定しておくべきMercurial拡張 - TIMLabs


CategoryProgramingTools