mercurial

textwrap でマルチバイト文字列を fold する

Mercurial に日本語メッセージカタログが同梱されるようになって久しいんですが、Mercurial 1.4 以降で日本語ヘルプメッセージが一部文字化けするようになってしまいました。化け方からすると text wrapping (folding) 処理まわりで化けているみたい(文字の…

MQ の適用済パッチのログメッセージを一括取得する extension を書いた

たとえば, $ hg qpush applying 248.diff now at: 248.diff $ hg qpush applying 249.diff now at: 249.diff $ hg qseries -s 248.diff: 記事追加機能を仮実装した(うまくいっていない) 249.diff: 記事追加機能を修正した 250.diff: 記事編集機能を実装し…

Mercurial MQ でバイナリファイルを扱う場合はご用心

MQ でなんの気なしにバイナリファイルを扱うと,バイナリファイル自体を lost します。これはこわい。というか実際にはまりました。 現象 まずバイナリファイルを追加。 $ hg init $ perl -e 'print "\x00"' > bin $ ls bin $ hg addremove adding bin $ hg …

単一の changeset を分割する(ファイル単位の場合)

いま working copy がこんな状態だとする。 $ hg status M aaa M bbb M cccとりあえず aaa だけ commit しようと思って…… $ hg ci -m 'modified aaa'あああパス指定するの忘れた。 $ hg statusbbb, ccc も changeset に取り込まれてしまった!やりなおしたい…

Mercurial MQ について

巷では git の大ブームだけど,ひさしぶりに Mercurial について書きます。 Mercurial について言及されたブログとか読んでいるとき,たまに MQ という言葉を目にして気になっていた。ながらく気にはとめつつ全然調べていなかったんだけど,ちょっと利用しよ…

Mercurial 勉強中 (8) - hook を Trac と絡めて

TracMercurial を使ってインタフェースとして Trac を利用している場合*1,hook を設定するとさらに便利になります。 trac の post-commit-hook ヘルパスクリプトとは たいていの SCM には commit 時などについでに何か(メールを送信したりスペルチェックを…

Mercurial 勉強中 (7) - Web 経由の push と HTTP 認証

Web 経由で Mercurial のレポジトリを公開すると,デフォルトの状態では clone / pull しかできません。push するためには設定が必要になります。なお今回は hgweb.cgi や mod_wsgi 経由*1等で Apache と絡めた場合の話になります。というのは,hg serve コ…

Mercurial 勉強中 (6) - named branch と update -C

今回は named branch についてです。別に Mercurial を利用するうえで必須の概念ではないのですが,こいつを使うと multiple heads での changeset 間移動に習熟できますので。 ひとことまとめ Multiple heads は怖くない!hg update -C で branch 間の移動…

Mercurial の Subversion convert extension

Mercurial 0.9.5 以降には,他の SCM からレポジトリを取り込むための convert extension が装備されました(⇒ ConvertExtension - Mercurial)。Subversion のレポジトリから convert するための extension ももちろん含まれています。利点も多いのですが,…

Mercurial 勉強中 (5) - conflict と multiple heads, merge

他レポジトリとの conflict 状態と multiple heads の関係を step by step で確認していきます。 Step 1: 既存レポジトリを clone する まずは,既存のレポジトリを clone します。 [hg]% hg clone remote local 1 files updated, 0 files merged, 0 files r…

Mercurial 勉強中 (4) - branch と heads

Mercurial には branch という概念があります。これは Subversion で svn cp にて能動的に利用する branch とは違って,システムで用意されている機能です。なので,Subversion における branch(es) のことはスッパリ忘れてください。ややこしいのは,Mercur…

Mercurial 勉強中 (3) - .hgignore で無視リスト

要旨 SCM にはバージョン管理の対象外としたいファイルを指定するのに「無視リスト」という機能があります。 Subversion では svn:ignore プロパティにより無視リストを指定する このため,cp や mv 時に無視リストも引き継がれる また,あくまで svn:ignore…

Mercurial は空ディレクトリを管理対象に含めることができない

[~]% mkdir example && cd example [example]% hg init [example]% touch a.txt && mkdir b [example]% ls -F a.txt b/ [example]% hg status ? a.txt [example]% hg addremove adding a.txt [example]% hg status -A A a.txt [example]% hg ci -m "Initial …

Trac / レポジトリ生成用 CGI を Mercurial 対応に

以前(⇒ レポジトリ・trac 生成 CGI を作る - daily dayflower)作ったレポジトリ等生成ウェブインタフェースを,Mercurial にも対応するように書き換えました。といっても Trac 0.11b2 用にしてしまったので,0.10 では動きません。一応注釈はいれておいた…

Mercurial 勉強中 (2) - Trac と統合

Trac を Mercurial で使えるようにして,mod_wsgi にのせてみました。といっても,TracModWSGI – The Trac Project と TracMercurial – The Trac Project に沿ったらできましたのでインスコ方法とかは略。せっかくなので Trac 0.11b1 でやってみました。ソー…

Mercurial 勉強中 (1)

Mercurial の特徴 Mercurialでバージョン管理,http://python.matrix.jp/modules/mercurial.html#id3 も参照のこと。 分散型 SCM として設計されている 各レポジトリのチェックアウトはおのおの(基本的に)独立している;独立して生きていける Subversion …

Mercurial のウェブインタフェースを mod_wsgi にのせてみた

ちまたでは git が流行のきざしのようですが,わたしは今年 Mercurial を勉強する予定なのです。で,表題の件,最終的に Trac with TracMercurial に移行するつもりなので必要なくなりそうですが,技術的興味からやってみました。あ,でも hg から http 経由…