開発サーバー内に共有リポジトリを作成するときのメモです。
別サーバーにリポジトリを用意する程では無いときの参考になれば。
状況
- ホームディレクトリ配下でソースコードを書いて git で管理していた
- そのソースコードを、同一サーバーの他ユーザーと更新したくなった
- 別サーバーに git のリポジトリを用意する程では無い
ということで、サーバー内に共有リポジトリを用意することにしました。
共有前のソースコード
- ソースコードを作成したユーザーは kuma
- ホームディレクトリの example フォルダでソースコードを書いており、git を使っている
- ブランチは master と develop がある
$ pwd
/home/kuma/example
$ git branch
* develop
master
グループを作成してユーザーを所属させる
共有リポジトリを使用するユーザーのグループ名を developer で作成します。
ユーザーの kuma と、コードを共有するユーザー hachi を所属させます。
$ sudo groupadd developer
$ sudo usermod -aG developer kuma
$ sudo usermod -aG developer hachi
できているか確認します。
$ getent group developer
developer:x:1008:kuma,hachi
共有リポジトリの作成
共有リポジトリの作成先は /usr/local/git/example.git/ とします。
共有リポジトリの所有グループを developer に変更します。
$ sudo git init --bare --shared /usr/local/git/example.git/
$ sudo chgrp -R developer /usr/local/git/example.git/
作成していたソースコードを、共有リポジトリに反映します。
$ pwd
/home/kuma/example
$ git remote add origin /usr/local/git/example.git/
$ git push --set-upstream origin master
$ git push --set-upstream origin develop
共有リポジトリを使う
ソースコードの更新に加わる hachi ユーザーは
- メールアドレスと名前を設定
- ソースコードを自身のホームディレクトリ配下に clone
$ pwd
/home/hachi
$ git config --global user.email "hachi@example.com"
$ git config --global user.name "hachi"
$ git clone /usr/local/git/example.git/
とすることで、hachi は /home/hachi/example/ で作業でき、git で kuma とソースコードを更新していく感じです。
コメント