YAMAGUCHI::weblog

海水パンツとゴーグルで、巨万の富を築きました。カリブの怪物、フリーアルバイター瞳です。

さくらのVPSでgitosis使ってgitサーバ立てた

はじめに

こんにちは、Python界のすしざんまいです。あぶりとろうめえ。さてSphinxで書いたドキュメントをbitbucketやGitHubなんかで管理している今日この頃ですが、ちょっと自前でGitサーバ立てたくなったので、ちょうどさくらVPSも借りてることだし立ててみました。
今回はgitosis使って環境を作ります。

ログ

まずはgitosisの初期設定をするところまで。

(remote)% sudo apt-get install gitosis
(remote)% sudo adduser --system --shell /bin/sh --group --disabled-password --home /home/git git
(remote)% sudo -H -u git gitosis-init < .ssh/id_rsa.pub 
Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
(remote)% sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

この設定でgitユーザでgitosisを管理するようになったので、次にgitosisを管理する設定ファイルレポジトリをcloneする。ローカル側の.ssh/configを設定してあることを確認する。特に自鯖とかでsshに22番ポート使ってない場合は確認しておきます。

Host example.com
  Hostname host.example.com
  IdentityFile ~/.ssh/id_rsa
  Port 22222
  TCPKeepAlive yes

これでcloneしましょう。

(local)% git clone ssh://git@example.com/gitosis-admin.git
Cloning into gitosis-admin...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 0), reused 5 (delta 0)
Receiving objects: 100% (5/5), done.

こんな感じのツリー構造になってます。keydirに登録した公開鍵が全部追加される。

(local)% tree
.
├── gitosis.conf
└── keydir
    └── ymotongpoo@local.pub

gitosis.confを編集する。今回はnotesというレポジトリを追加してみる。membersはkeydirにあるファイル名のもの。

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = ymotongpoo@local

# ここから追加
[group notes]
writable = notes
members = ymotongpoo@local

これでサーバに管理ファイルをpushして設定を反映させます。

(local)% git add gitosis.conf
(local)% git commit -m "added repository notes"
(local)% git push

これでnotesというレポジトリができているはずです。状態でいったらGitHubでレポジトリ作ったところ。ローカルの方で実際のレポジトリを作成してpushします。

(local)% mkdir notes
(local)% cd notes
(local)% git init
(local)% git remote add origin ssh://git@stratos/notes.git
(local)% echo 'private notes' > README
(local)% git add README
(local)% git commit -m "first commit"
(local)% git push origin master

わりと簡単にできて満足です。UIフロントはGitXで十分かなあと思っています。あとgitosisの場合はレポジトリの削除は設定ファイル経由ではできないので自分でやらないといけないっぽいですが、まあ十分でしょう。