ec2のubuntu serverにgit gitosisをいれつつ、ローカルでは.ssh/configを設定

ubuntuサーバのamiはIndex of /releases/lucid/releaseで確認しておく。

とりあえず10.04 LTS Lucid Lynx を選択。


で本題のgit gitosisについて。

それぞれの入れ方はUbuntu 11.04 Gitサーバー(後編) | 書きかけの技術書+を読めば理解できる。

ec2のユーザでgitosis-initするのでその後の操作はec2上でやること。

gitosis-adminをcloneしてgitosis.confで


[repo hoge]
description = fuga
owner = name
daemon = yes
.
.
.
なり、http://progit.org/book/ja/ch4-7.htmlに書いてあるようにgroupだけの追加だけでもok。

ちなみに私はgroupでやって2回ほどmenbersと書いてしまい、なぜうまくいかないかわからず途方に暮れたことがある。membersですよね。

さておき、taroというユーザを追加したとする。
すると(先ほどrepoはやったので)groupの場合は以下のようになる。


[group test]
writable = test_project
members = taro
次にtaro用に作ったid_rsa.pubファイルをgitosis-admin/keydir/taro.pubと配置する。
これでgitosis.confとgitosis-admin/keydir/taro.pubをadd commit pushすればtaroはローカルでtestプロジェクトを作成してpushすることができる。

実際に


ssh -i ~/.ssh/id_rsa gitosis@ec2-0-0-0-0.ap-northeast-1.compute.amazonaws.com
なんてやってみるとちゃんとつながって、コマンドがないよみたいなエラーが出る(Ubuntu 11.04 Gitサーバー(後編) | 書きかけの技術書+参照)。

ここで.ssh/configを設定したくなるのが人情である。

ということでローカルで.ssh/configを作成し

以下のように設定する(参考~/.ssh/config で簡単に複数ホストへのSSH接続を管理する - すぱぶろ)


Host 適当な名前
HostName ec2-0-0-0-0.ap-northeast-1.compute.amazonaws.com
IdentityFIle ~/.ssh/id_rsa
User taro
これでtaroユーザで色々操作ができるようになった。

実際に


mkdir test
cd test
git init
touch readme
git add readme
git commit readme
git remote origin gitosis@適当な名前:test.git
git push origin master
と打てば新しいレポジトリにpushができる。

めでたしめでたし。