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

さくらの VPS を使う - 3. Mercurial

Server

Mercurial

$ sudo yum install mercurial
$ sudo useradd hguser
$ sudo su - hguser
hguser$ chmod 755 ~/  # Redmine からリポジトリにアクセスするために必要
hguser$ mkdir ~/hgrepo
hguser$ hg init ~/hgrepo/testrepo
hguser$ mkdir ~/.ssh
hguser$ chmod 700 ~/.ssh
hguser$ vim ~/.ssh/authorized_keys
こんな感じに key を追加してやる。
command="cd ~/hgrepo && hg-ssh testrepo subdir/repo2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-rsa …
hguser$ chmod 600 ~/.ssh/authorized_keys 
hguser$ exit
# ここから下は不要かも。追記参照
$ wget http://www.selenic.com/repo/hg-stable/raw-file/tip/contrib/hg-ssh
$ chmod +x hg-ssh
$ which hg
/usr/bin/hg
$ sudo mv hg-ssh /usr/bin
$ hg -v | grep Mercurial
Mercurial Distributed SCM (version 1.4)

古すぎる。hg-ssh が上手く動かない。パッチ(自作)を当てて改善

アクセスするためにはこうすればいいのかな: hg command ssh://hguser@example.com:12345/~/hgrepo

共有ディレクトリ作成

$ sudo mkdir /home/share
$ sudo chown nobody:nobody /home/share
$ sudo chmod 777 /home/share

ここに、共有したいさまざまなファイルを書き込むようにする。

2013-04-24 追記

Fujiwara さん から「Mercurial のバージョンに合った hg-ssh を使うべき」とのご指摘をいただいた。具体的には wget 時に tip からではなくバージョンに合ったリポジトリから hg-ssh を持ってくる。バージョン 1.4 のときはこちら: http://www.selenic.com/repo/hg-stable/raw-file/1.4/contrib/hg-ssh

また、$ rpm -ql mercurial | grep hg-ssh としてみたら /usr/bin/hg-ssh と表示されたので、どうやら yum install 時に既に hg-ssh はインストールされているみたいだ。上の手順だと、一度インストールされた hg-ssh をわざわざ最新版に書き換えてしまっている(そしてそれが原因で問題が発生している)ように見える。このへんは再インストールする機会があったらもう一度検証したい。