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

opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

リモートなmercurialリポジトリを作る

昔mercural-serverを使ってremoteなmercurialリポジトリを作ったような気がするが、その時のサーバー環境も記憶も残ってないので今回は素のmercurialsshだけで作ってみた。
要はここでやってることをmercurialでもやってみよう的な。

リモートに専用ユーザーを作る

別に自分の今のユーザーを使っても良いが、念のため専用ユーザーを作った。

$ sudo useradd -m -g users -G users -d /home/mercurial mercurial  
$ sudo passwd mercurial

鍵を登録する

アクセスするローカルマシンで鍵を作る

$ ssh-keygen -t ecdsa

publicキーを先ほど作ったmercurialユーザーのautohirized_keysに追加する。

$HOME/.ssh/configに追記
hostnameはサーバーのホスト名に

Host hostname.here.com
    User mercurial
    Hostname hostname.here.com
    Port 22
    Identityfile ~/.ssh/id_ecdsa #さっき作ったprivateキー
    TCPKeepalive yes

リモートマシンで空のリポジトリを作る

WebのUIなんてないので、リモートのいちいちログインしてリポジトリを作らなければならない。
今回はリポジトリは全部mercurialユーザーのホーム以下のrepoの中に入れることを想定

[mercurial user]$ mkdir -p ~/repo/test-repo
[mercurial user]$ cd ~/repo/test-repo
[mercurial user]$ hg init .

mercurialにはgitのbareがないので、hgrcに以下を追記する必要がある。

[mercurial user]$ emacs .hg/hgrc
[hooks]
changegroup = hg update >&2

clone / pushしてみる

ローカルに戻ってclone pushしてみる。

$ hg clone ssh://hostname.here.com/repo/test-repo

cloneできるなら成功。

$ touch README
$ hg add .
$ hg commit -m "test commit"
$ hg push

pushできたら成功

終わりに

プロジェクトの作成をする時とかめんどくさいと思うなら、ちょっと工夫すれば自動化できそうだと思った(小並感)。
多人数開発には向かないが、個人でプライベートなリポジトリを建てるときはこの方が効率的かもしれない。

続きを書いた

参考資料

http://qiita.com/rerofumi/items/3ffc39dfd6a30be5a711

http://takuya-1st.hatenablog.jp/entry/20110501/1304262598

Firefox ブラウザ無料ダウンロード