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

YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

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

git Ubuntu

はじめに

こんにちは、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の場合はレポジトリの削除は設定ファイル経由ではできないので自分でやらないといけないっぽいですが、まあ十分でしょう。