[HOME]: [Mac OS X]: [MacPython]: [Emacs]: [生存報告記]: [MacEmacs JP Project]: [NTEmacs JP Project]:

概要

MercurialからGitへの移行:MercurialToGit

確認中事項

公式サイト

関連サイト

関連ツール

GUI クライアント

Mac、Win、Linux

Mac、Win

Mac

参考

plugin 等

利用プロジェクト

OpenSolaris Source Code Management at OpenSolaris.orgOpenSolarisで利用

インストール

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: HG MQ

Mercurial MQ について - daily dayflower

TortoiseHgでMQを使う | endflow.net blog

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

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 - DZone Integration

コマンド

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

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

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

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 for Emacs

XSteve's Emacs DVC.el page

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 との連携

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 » mercurial bookmarks

Eclipse

Mercurial 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:無償

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

参考サイト

Quick, easy-to-understand tips for using Mercurial / hg tip

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

satolog: Mercurial と Trac のメモ

XREA FREE で Mercurial を - miau's blog?

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

JapaneseCGI Install - Mercurial

Greenbear Laboratory - Mercurialを使ってみよう

BitBucket で無料ホスティング / hg tip

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

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

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


CategoryProgramingTools

紹介マニアMoinMoin: Mercurial (last edited 2019-10-12 04:08:10 by sakito)