WindowsでのMercurialは一通りさわってみたので、分散リポジトリを試すべく、CentOS, Solarisの各マシンにMercurialをインストールしました。
CentOS
CentOS 4.4(x86)へのインストール
まずpythonをアップデート。CentOS 4.4の場合、Pythonのバージョンは2.3に固定。ちょっと古いかなと思いつつ
$ sudo yum update python : $
MercurialのサイトからBinaryPackagesのダウンロードでCentOS 4.5用のrpmパッケージが入手できます。これをrpmコマンドでインストールしました。
$ sudo rpm -ivh mercurial-0.9.4-1.i686.CentOS-4.5.rpm : $
リポジトリの公開(hg serve)
hg serveを起動後、アクセスするとエラーになってしまいました。
$ hg serve : File "/usr/lib/python2.3/posixpath.py", line 62, in join elif path == '' or path.endswith('/'): AttributeError: 'NoneType' object has no attribute 'endswith'
pythonのバージョンをあげるべく、ActivePython 2.5.1をインストールし、Mercurialをソースからインストールしたところ、hg serveのエラーはなくなりました。
リポジトリの公開(http経由)
hg serveコマンドでhttpによるリポジトリの公開ができます。リポジトリ(.hg)のあるディレクトリで、hg serve とコマンドを実行するだけです。デフォルトで8000ポート、ポート番号はコマンドラインオプション(-p)で指定できるようです。
ssl required
WindowsマシンからUNIX(Solaris)マシンへpushしたときに、"ssl required"エラーが発生しました。Mercurialのhg serveはデフォルトでSSLを使用するのですが、push側でSSLを使う設定が別途必要なようです。
なお、MercurialのFAQには、SSLを無効にする設定が記載されていました。リポジトリのhgrcファイルに以下を記述します。これはhttpサーバ側(pushされる側)のリポジトリ(.hg/hgrcなど)に記述します。
[web] push_ssl = false
hg serveは書き込みは許さない
ということで、hg serveでHTTPサーバを起動したリポジトリに対してpushはできないのが仕様のようです。