読者です 読者をやめる 読者になる 読者になる

When it’s ready.

出来るまで出来ない

シンタックスハイライトと、ツリー表示のタメーのhgwebをsakura VPSにインスコする

BTSとしてのredmineの使い心地は、想像以上のものでsqlite3を使ってるとバックアップもサーバーの移動も至極簡単。
ただ、リポジトリーにアクセスするのにsshだとチョットめんどくさいので、httpでやりとり出来るようにしておきたい。hgには、hgwebがあるので複数リポジトリも一回の設定で一括で公開してくれる。おまけで、aptでインスコされるredmine0.9では、Pythonをシンタックスハイライトしてくれないけど、hgwebではpygmentsで対応しているフォーマットはハイライトしてくれるし、branchやtagも見ることが出来る。一石三鳥なり。

リポジトリーの設定など

リポジトリ:/var/repos 下にシンボリックリンクを配置する
リポジトリ設定:/var/repos直下
リポジトリURL:hg.hoge.com/リポジトリ
サイト設定:hg.hoge.com で公開

リポジトリの設定ファイル

フォルダとファイルの作成と、パーミッションの設定
sudo -s
mkdir /var/repos
cd /var/repos
touch .config
touch.hgrc
touch hgweb.cgi
chown www-data:www-data .config .hgrc hgweb.cgi
chmod +x hgweb.cgi
各種ファイルの中身

.config

[collections]
/var/repos = /var/repos

.hgrc

[web]
push_ssl = false
allow_push = *
style = monoblue
pygments_style = native

[extensions]
hgext.highlight= 

hgweb.cgi

#!/usr/bin/env python
import os
config = "/var/repos/.config"

os.environ['SCRIPT_NAME'] = ''
os.environ["HGENCODING"] = "UTF-8"
os.environ["HGRCPATH"] = "/var/repos/.hgrc"

from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)

Apache関係の設定

リポジトリのパスをURLに反映させるためにmod_rewriteをenable
sudo -s
a2enmod rewrite
sitesファイルの作成とBasic認証用のファイルを作成する
sudo -s
cd /etc/apache2/sites-avalable
touch hg.hoge.com
htpasswd -c /var/repos/.htpasswd atusi
##パスワードを入力する ##
chown www-data:www-data /var/repos/.htpasswd

hg.hoge.com

<VirtualHost *:80>
  ServerName hg.hoge.com
  ServerAdmin hg-admin@hoge.com

  RewriteEngine on
  RewriteRule (.*) /var/repos/hgweb.cgi/$1

  DocumentRoot /var/repos

  <Directory "/var/repos/">
    Order allow,deny
    Allow from all
    AllowOverride All
    Options ExecCGI
    AddHandler cgi-script .cgi
    AuthType Basic
    AuthName "Mercurial repositories"
    AuthUserFile /var/repos/.htpasswd
    <LimitExcept GET>
      Require valid-user
    </LimitExcept>
  </Directory>
</VirtualHost>
シンタックスハイライト出来るようにPygmentsをインスコ
sudo -s
easy_install pygments

リポジトリーの登録

/var/repos直下に直にリポジトリーを置くもよし、Dropbox内のリポジリーのリンクを貼るもよし
リンクを作成する

ln -s /path/to/repo /var/repos/<repo_name>

フィニッシュ!

apacheを再起動すればモーケー

sudo /etc/init.d/apache2 restart