Mercurial いろいろ
MQ の基本
Mercurial MQ について - daily dayflower http://d.hatena.ne.jp/dayflower/20090520/1242794877
設定
%userprofile%\Mercurial.ini に MQ を使うように設定する。
コンソールでの色付けがあると便利なので color も一緒に。
[extensions] mq= color=
hg qinit hg qnew homu #作業履歴を放り込むパッチ homu を指定 hg qrefresh -m "ほむほむ" #homu に作業履歴を放り込む git add。実行するたびに homu を更新。-m でコメント hg qseries -s #パッチスタックがどのようになっているか調べる。-sでコメントも表示 hg qnew homuhomu #新しく作業履歴を放り込むパッチ homuhomu を指定
MQ で履歴改変
http://d.hatena.ne.jp/ursm/20080914/1221397471
hg qimport -r 1:tip # すべてのリビジョンをパッチ化 hg qapplied -s # コメント付きでパッチを一覧表示 hg qgoto 1.diff # 一つ目のパッチに移る 修正 hg qrefersh -e # 変更をパッチに適用。-e でコメント変更のためにエディタ起動 hg qpush -a # -a ですべてのパッチを適用。 hg qfinish -a # changeset へ適用
hg push で規定の場所へ push
.hg/hgrc に
[paths] default = ssh://hg@bitbucket.org/hokorobi/homu
git commit --amend っぽいもの
[2012-06-10 追記] 2.2.2 から commit --amend で OK
Windows なので、コマンドの間は &&
hg qimport -r tip && hg qrefresh -e && hg qfinish tip
%userprofile%/Mercurial.ini の [alias] にこんなの追加
amend = !%HG% qimport -r tip && %HG% qrefresh -e && %HG% qfinish tip
commit 以降にリポジトリに追加されているファイルが変更されていたりすると、直前に commit したファイルだけでなくて、そのファイルも追加されてしまう。
WinMerge をマージツールにする
Slightly Stupid: Mercurial(TortiseHG)でWinMerge(日本語版)を使う http://shouldbeslightlystupid.blogspot.com/2009/11/mercurialtortisehgwinmerge.html
Mercurial.ini
[merge-tools] winmergeu.args=/e /x /wl /ub /dl other /dr local $other $local $output winmergeu.regkey=Software\Thingamahoochie\WinMerge winmergeu.regname=Executable winmergeu.fixeol=True winmergeu.checkchanged=True winmergeu.gui=True winmergeu.diffargs=/r /e /x /ub /wl /dl '$plabel1' /dr '$clabel' $parent $child [alias] merge = merge -t winmergeu
rebase
REV を root にして rebase。ブランチは残しておく。
hg rebase -d REV --keepbranches
Mercurial.ini
[alias] rebase = rebase --keepbranches
日本語ファイル名
Windows 以外で使いたいときは日本語ファイル名なんてつけるな! ということで、気にしない。
Mercurial.ini
[extensions] win32mbcs= [win32mbcs] encoding = cp932
WinMerge で diff
How to Use WinMerge as the Diff tool for Mercurial - Super User http://superuser.com/questions/23576/how-to-use-winmerge-as-the-diff-tool-for-mercurial
Mercurial.ini
[extensions] extdiff= [extdiff] cmd.wdiff = C:\app\WinMerge\WinMergeU.exe opts.wdiff = /e /x /ub /wl
コマンド
hg wdiff
Collapse Extension
コミットの結合。
hg collapse -r 2:3 とか。
現在のコミットと直前のコミットを結合する fold を登録
[alias] fold = collapse -r ".^:."
Histedit Extension
[2012-11-14 追記] 2.3 から本体に取り込まれた。
git rebase -i みたいなの。
さかのぼって編集したいコミットまでを指定。
hg histedit 3
いちいちパイプでページャに渡すのメンドイ
[2012-06-10 追記] 2.2.1 から pager が Windows で動くようになった。
hg log | less は hg log だけにしたかったので tpager を使ってみた。pager はうまく動いてくれなかった。
http://d.hatena.ne.jp/hokorobi/20120119/1326978722
他
- record 部分コミット
- ci --close-branch -m "close" ブランチのクローズ
- メッセージを日本語にする。環境変数 LANG = ja
[alias] log = log -f l = log -f b = bookmark gl = log -G -f stm = status -m