ソフラボの技術ブログ

仕事で使ったプログラミング、サーバー周りで役に立つこと、Webサービス開発に必要な技術情報、モバイル情報を書いてます。わかりやすく見やすくをモットーにしています。

Mercurialのhgweb.cgiでテーマを変える

f:id:shinsuke789:20141003110840p:plain

Mercurialにはhgweb.cgiを使ってhttpでリポジトリを閲覧できる機能があります。
デフォルトのテーマがイマイチなので他テーマがないか調べてみるといくつかあったので紹介します。

環境

OS CentOS 6.3
Mercurial 3.1.2

テーマの種類と取得

下記サイトにあったテーマを1つずつ検証してみました。
AvailableThemes - Mercurial

paper

デフォルトテーマ。Mercurialに含まれる。
f:id:shinsuke789:20141009163053p:plain

coal

Mercurialに含まれる。
f:id:shinsuke789:20141009163103p:plain

spartan

Mercurialに含まれる。
f:id:shinsuke789:20141009163111p:plain

monoblue

Mercurialに含まれる。
f:id:shinsuke789:20141009163120p:plain

gitweb

Mercurialに含まれる。
f:id:shinsuke789:20141009163127p:plain

mercurialweb

別途取得する。

hg clone http://hgweb.boddie.org.uk/MercurialWebTheme

f:id:shinsuke789:20141009163139p:plain

seaweed

別途取得する。動作せず。

hg clone https://bitbucket.org/binarymutant/themes/src/tip/Mercurial/seaweed

gitweb_sonic

別途取得する。動作せず。

markdown

別途取得する。

hg clone https://bitbucket.org/celdredge/hgext.markdown

f:id:shinsuke789:20141009163151p:plain

個人的には「mercurialweb」が好みです。

テーマの配置

テーマを適用するには、Pythonのパッケージディレクトリ配下(デフォルト)か任意の場所に展開します。
テーマの場所によって設定方法が異なります。

Pythonパッケージディレクトリに配置する

使用するPythonの「site-package」ディレクトリを探し、その中のMercurialのテンプレートディレクトリを探します。

/usr/local/lib/python2.7/site-packages/mercurial/templates

取得したテーマにある「tmpl」ファイルを含んだディレクトリを上記パスにコピーします。
同ディレクトリ内に「static」ディレクトリがある場合、コピー後削除します。

# mercurialwebの例
cp -R /tmp/MercurialWebTheme/themes/mercurialweb /usr/local/lib/python2.7/site-packages/mercurial/templates

同テーマにある「static」ディレクトリ内のファイルをPythonのテンプレートディレクトリにコピーします。
jsが含まれていることがあるのでそれはコピーしないようにします。

# mercurialwebの例
cp -R /tmp/MercurialWebTheme/themes/mercurialweb/static/* /usr/local/lib/python2.7/site-packages/mercurial/templates/static

任意の場所に配置する

使用するファイルは「tmpl」を含んだディレクトリと「static」ディレクトリです。
それ以外は削除しても問題ありません。

「tmpl」ファイルと同じ場所に「static」ディレクトリを移動します。

テーマの設定

ログインユーザーのホームディレクトリに「.hgrc」というファイルが存在するか確認します。
なければ新規で作成します。

vi ~/.hgrc


設定はiniファイル形式です。
テーマをPythonのパッケージディレクトリ配下(デフォルト)に配置した場合「style」にテーマ名、任意の場所に配置した場合「templates」にテーマのパスを指定します。

[web]
# テーマ名(テーマがデフォルトパスにあるとき)
style = mercurialweb

# テンプレートパス(テーマが任意のパスにあるとき)
templates = /var/mercurial/templates/mercurialweb

テーマを変更した場合、ブラウザのキャッシュをクリアして反映されたか確認します。