git:ローカルサーバー内で共有リポジトリを使う

開発サーバー内に共有リポジトリを作成するときのメモです。
別サーバーにリポジトリを用意する程では無いときの参考になれば。

状況

  • ホームディレクトリ配下でソースコードを書いて 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 とソースコードを更新していく感じです。

コメント