トップ 最新 追記 RSS feed

継続にっき

2004|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|12|
2006|01|03|05|06|08|09|10|12|
2007|01|02|03|05|07|12|
2008|10|
2009|01|05|12|
2010|04|05|11|
2011|01|09|12|
2012|02|03|05|09|12|
2013|02|03|
2014|05|09|
2015|12|

2007-01-06 (Sat)

))) /etcのバージョン管理 with Mercurial

CVSによるオープンソース開発にも話題が出てるけど、 実際にやってるって話をとんと聞かない/etcのバージョン管理。これをMercurialを使って試してみた。

この用途にCVSやSubversionではなくMercurialを使うメリットは少なくとも2つ考えられる。

  • cd /etc;hg init で用意が完了する。最初のimportとcheckoutがいらないので導入コストが低い。
  • 管理ディレクトリがトップディレクトリ中の.hgのみしかないのでアクセスコントロールが楽。CVSなどはサブディレクトリごとに管理ディレクトリを作成する。

試してないけど、サーバ間で変更の同期を取るのにも使えるかも。

))) hg logでsummaryではなくdescriptionを出力する

で、初めて本格的にMercurialを使い始めたのだけど、いろいろカスタマイズしたいところが出てきた。

標準のhg logの出力は次のような形で、コミットメッセージはそのsummary(=1行目)が出力される。 つまり、コミットメッセージが複数行に渡る時はそのすべてを確認することが出来ない。

changeset:   3:b9d48fc01c60
user:        User <user@example.com>
date:        Thu Jan 05 21:00:27 2007 +0900
summary:     commit message line1.

-vオプションを使うというのも一つの手だけど、もう少し柔軟に何とかならないものかと調べてみると--styleオプションが使えそうだということが分かった。

hg log [OPTION]... [FILE]
options:
     --style           display using template map file

オリジナルのテンプレートはDebianの場合/usr/share/mercurial/templates/map-cmdline.defaultにあるのでそいつをカスタマイズして使えばいいみたい。

# mkdir ~/.hg
# cp /usr/share/mercurial/templates/map-cmdline.default ~/.hg/map-cmdline.custom
# vi ~/.hg/map-cmdline.custom

-changeset = 'changeset:   {rev}:{node|short}\n ... summary:     {desc|firstline}\n\n'
+changeset = 'changeset:   {rev}:{node|short}\n ... description:\n{desc|strip}\n\n'

# cd /etc
# hg log --style ~/.hg/map-cmdline.custom

 changeset:   3:b9d48fc01c60
 user:        User <user@example.com>
 date:        Thu Jan 05 21:00:27 2007 +0900
 description:
 commit message line1.
 commit message line2.

うん、出来た。標準でこのフォーマットを使いたいなら次のようにする。

# vi ~/.hgrc

 [defaults]
 log = --style /root/.hg/map-cmdline.custom

2007-01-18 (Thu)

))) インクリメンタルサーチ対応 Gauche ユーザリファレンス

ちょくちょく利用されているようなので、Gauche 0.8.9リリースにあわせて更新。

ついでに任意のバージョンのドキュメントを用意したい人向けにこの生成方法について簡単に書いておきます。 キモはisearch.html中の<table id="all">の中身なんですが、この部分はHTML化されたGaucheユーザリファレンスを適当なディレクトリに展開したあとその中で

grep 'class="summary-letter"' gauche-refj*|\
  grep --only-matching 'gauche-refj_[0-9]*\.html'|sort|uniq|\
  xargs grep --no-filename '^<tr><td></td><td valign="top"><a href="gauche-refj'|\
  sed 's/a href/a target="ref" href/g'

としたものを埋め込んでいます。あとは必要なファイルを落として同じディレクトリに置けば完成。


2004|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|12|
2006|01|03|05|06|08|09|10|12|
2007|01|02|03|05|07|12|
2008|10|
2009|01|05|12|
2010|04|05|11|
2011|01|09|12|
2012|02|03|05|09|12|
2013|02|03|
2014|05|09|
2015|12|
トップ 最新 追記 RSS feed