Git 1.8.3.1をCentOS 7.2へインストールしてベアリポジトリを構成
目次
概要
CentOS 7.2へGit 1.8.3.1をインストールして、複数のアプリケーション開発者が共同で利用するためのリポジトリを構成します。 Gitの細かい説明は割愛しますが、今回構成するリポジトリは、ベアリポジトリと呼ばれ、 みんなが作成、編集したアプリケーションを集約して管理するためのリポジトリです (個人的には集中管理と言うとちょっとニュアンスが異なる気がします)。 管理するのが目的のリポジトリなので、各開発者がベアリポジトリ上で管理されているソースコードを直接編集することはできません。 各開発者の端末上に構成されたローカルリポジトリ(ノンベアリポジトリ)でコミットしたソースコードを pushしたり、他の開発者がプッシュした変更をpullして、自身のローカルリポジトリに取り込んで使うような形になります。
構成
サーバ構成
OSバージョン
CentOS 7.2.1511 x86_64
ソフトウェア・パッケージ一覧
- git-1.8.3.1-5.el7.x86_64.rpm
- perl-Git-1.8.3.1-5.el7.noarch.rpm
- libgnome-keyring-3.8.0-3.el7.x86_64.rpm
- perl-TermReadKey-2.30-20.el7.x86_64.rpm
- perl-Error-0.17020-2.el7.noarch.rpm
環境構築
インストール
Gitのパッケージとその依存パッケージ4つをインストールします。 CentOS 7.2のインストールDVDをDVDドライブに挿入し、以下のコマンドを実行します。
# cd /media/ # mkdir cdrom # mount /dev/cdrom /media/cdrom mount: /dev/sr0 is write-protected, mounting read-only # cd /media/cdrom/Packages/ # rpm -ihv git-1.8.3.1-5.el7.x86_64.rpm libgnome-keyring-3.8.0-3.el7.x86_64.rpm perl-Error-0.17020-2.el7.noarch.rpm perl-Git-1.8.3.1-5.el7.noarch.rpm perl-TermReadKey-2.30-20.el7.x86_64.rpm 警告: git-1.8.3.1-5.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY 準備しています... ################################# [100%] 更新中 / インストール中... 1:perl-Error-1:0.17020-2.el7 ################################# [ 20%] 2:perl-TermReadKey-2.30-20.el7 ################################# [ 40%] 3:libgnome-keyring-3.8.0-3.el7 ################################# [ 60%] 4:perl-Git-1.8.3.1-5.el7 ################################# [ 80%] 5:git-1.8.3.1-5.el7 ################################# [100%] # cd / # umount /media/cdrom
設定
Git用OSグループの作成
Gitをリモートリポジトリとして利用する際に、OSユーザとOSグループでアクセスを制御します(複雑な制御はできないかったと思います)。 まず、Git用のOSグループをグループ名 gitgroup、GID 1001 で作成します。 グループ名とGIDはサーバ内で一意になっていれば、任意で付与して構いません。
# groupadd -g 1001 gitgroup
# tail -n 2 /etc/group
stapdev:x:158:
gitgroup:x:1001: ←OSグループが作成された
Git用OSユーザの作成
続いてGit用のOSユーザをユーザ名 gituser01、UID 1001 で作成します。 OSグループと同様にユーザ名とUIDはサーバ内で一意になっていれば、任意で構いません。 また、OSユーザ作成後に、パスワードも設定します。
# useradd -u 1001 -g 1001 gituser01 # tail -n 2 /etc/passwd tcpdump:x:72:72::/:/sbin/nologin gituser01:x:1001:1001::/home/gituser01:/bin/bash ←OSユーザが作成された # passwd gituser01 ユーザー gituser01 のパスワードを変更。 新しいパスワード: ←パスワードを入力 新しいパスワードを再入力してください: ←上と同じパスワードを再入力 passwd: すべての認証トークンが正しく更新できました。
ベアリポジトリ用ディレクトリの作成
Gitのリポジトリデータを格納するディレクトリを作成します。 今回ベアリポジトリとするディレクトリは /data/git/repo.git/ とします。 ディレクトリは以下のポリシーで作成します。
- /data/ はGit以外でも利用するため、所有者が root で、パーミッションは 777 とする。
- /data/git/ 内にリポジトリ用のディレクトリを作成する。複数作成する想定。所有者は gituser01 で、パーミッションは744 とする。
- /data/git/repo.git/ をベアリポジトリとする。所有者は gituser01 で、パーミッションは 744 とする。
# cd / # mkdir data # ls -ld data/ drwxr-xr-x 2 root root 6 8月 21 12:27 data/ # chmod 777 data # ls -ld data/ drwxrwxrwx 2 root root 6 8月 21 12:27 data/ # su - gituser01 $ cd /data/ $ mkdir git $ ls -ld git/ drwxr-xr-x 2 gituser01 gitgroup 6 8月 21 12:30 git/ $ cd /data/git/ $ mkdir repo.git $ ls -ld repo.git/ drwxr-xr-x 2 gituser01 gitgroup 6 8月 21 12:32 repo.git/
ベアリポジトリの作成
作成した /data/git/repo.git/ ディレクトリをベアリポジトリとして初期化します。 空だったディレクトリに必要なファイルが生成され、ベアリポジトリとして利用できるようになります。 なお、gitコマンドのオプションとして --shared を付与することで、ベアリポジトリを作成したユーザ gituser01 だけでなく、 同じグループ gitgroup に所属するユーザにもアクセス可能なパーミッションが付与されます。
$ cd /data/git/repo.git/ $ git init --bare --shared Initialized empty shared Git repository in /data/git/repo.git/ $ ls -l 合計 16 -rw-rw-r-- 1 gituser01 gitgroup 23 8月 21 12:36 HEAD drwxrwsr-x 2 gituser01 gitgroup 6 8月 21 12:36 branches -rw-rw-r-- 1 gituser01 gitgroup 126 8月 21 12:36 config -rw-rw-r-- 1 gituser01 gitgroup 73 8月 21 12:36 description drwxrwsr-x 2 gituser01 gitgroup 4096 8月 21 12:36 hooks drwxrwsr-x 2 gituser01 gitgroup 20 8月 21 12:36 info drwxrwsr-x 4 gituser01 gitgroup 28 8月 21 12:36 objects drwxrwsr-x 4 gituser01 gitgroup 29 8月 21 12:36 refs $ exit ログアウト #
以上でGitのベアリポジトリの構成は終了です。 次はベアリポジトリを利用するための開発者端末での設定を行います。