ローカルで履歴管理だけやるのでしたらこれ以上の作業は不要で、ローカルにリポジトリを作って適宜ファイルをコミットする運用をすればよく、それはそれで便利です。
複数台のマシンや複数人を対象とした場合や万が一のバックアップとして使う場合は、サーバー上にリポジトリを作ってローカルには複製を置くことになります。
そうなると新しいリポジトリの作成や利用者の追加などの作業が発生します。特に工夫をしなければ都度サーバーにログインしての作業ということになりますが、面倒ですしリポジトリの管理やユーザーの管理も大変です。
管理を楽にするために管理用のツールを使います。管理ツールはいろいろありますがGitoliteを使いたいと思います。
Gitリポジトリの管理ツールです。リポジトリの作成やユーザー管理ができます。
管理にGitを使うのが特徴です。
サーバー側の作業です。
Gitoliteはyumコマンドでインストールできます。
$ sudo yum -y install gitolite
端末側の作業です。
秘密鍵と公開鍵のペアを作成します。Windowsの場合はPuTTY Download PageにあるPuTTYgenを使うのが簡単だと思います。使い方は検索すれば説明してあるページがたくさん見つかります。
PuTTYgenを使う時に間違えやすいのが公開鍵の作成方法で、「Save public key」ボタンを使うのではありません。画面上部にある「Public key for pasting into OpenSSH authorized_keys2 file:」と書かれている欄の文字列を使います。
秘密鍵のファイル名は任意ですが、以下ではgitoliteというファイル名で作成したとして説明します。他のファイル名にする場合は適宜読みかえてください。
作成した秘密鍵をホームディレクトリーの下の.sshディレクトリーの中に保存します。Windows 7の場合、通常は C:\Users\${ユーザー名}\.ssh です。
Gitを実行する時にサーバー名や秘密鍵の指定を省略できるようにするために設定を追加します。設定はホームディレクトリーの下の.sshディレクトリーの中のconfigファイルに記載します。以下、設定例です。
host gitserver user gitolite hostname ${ホスト名} port ${ポート番号} identityfile ~/.ssh/gitolite
サーバー側の作業です。
管理用ユーザーの鍵をサーバに保存します。ここでは/tmp/gitolite.pubで保存したとします。
セットアップコマンドを実行します。
$ sudo su - gitolite $ gl-setup -q /tmp/gitolite.pub creating gitolite-admin... Initialized empty Git repository in /var/lib/gitolite/repositories/gitolite-admin.git/ creating testing... Initialized empty Git repository in /var/lib/gitolite/repositories/testing.git/ [master (root-commit) 9393af5] gl-setup -q /tmp/gitolite.pub 2 files changed, 9 insertions(+), 0 deletions(-) create mode 100644 conf/gitolite.conf create mode 100644 keydir/gitolite.pub
これで管理用のgitoliteリポジトリとテスト用のtestingリポジトリができました。
端末側の作業です。
管理用ユーザーの鍵を作成したのと同じ要領で鍵を作ってください。ここでは秘密鍵をuser.key、公開鍵をuser.pubで保存したとします。user.pubのuserの部分がユーザー名になります。suzukiというユーザー名にする場合はsuzuki.pubで保存します。
管理用リポジトリをcloneします。
# コマンド例
$ git clone ssh://gitserver/gitlite-admin
公開鍵をgitolite-admin/keydirの下に保存してリポジトリに登録し、pushします。
# コマンド例 $ git add user.pub $ git commit -m "userを追加" $ git push
これで利用者の追加ができました。このように、サーバーにログインせず端末上でgitコマンドを実行するだけでユーザーを作れます。
一般ユーザーでGitを実行する時にサーバー名や秘密鍵の指定を省略できるようにするために設定を追加します。設定はホームディレクトリーの下の.sshディレクトリーの中のconfigファイルに記載します。以下、設定例です。
host gitserver-user user gitolite hostname ${ホスト名} port ${ポート番号} identityfile ~/.ssh/user.key
端末側の作業です。
一般ユーザーの作成と登録時にcloneしたリポジトリのconf/gitolite.confファイルを修正します。最初は次のような内容になっています。
repo gitolite-admin RW+ = gitolite repo testing RW+ = @all
gitolite-adminとtestingというふたつのリポジトリがありgitolite-adminはgitoliteのみが、testingはすべてのユーザーが利用できる設定なっています。
リポジトリを作成する時には、このgitolite.confファイルにリポジトリの設定を追加します。app1というリポジトリでuserというユーザが読み書きできるようにするためには次のようにします。
repo gitolite-admin RW+ = gitolite repo testing RW+ = @all repo app1 RW = user
ファイルの修正が終わったらcommitしてpushします。
# コマンド例 $ git add gitolite.conf $ git commit -m "app1リポジトリを作成" $ git push
作成したリポジトリは次のようにしてcloneできます。
# コマンド例
$ git clone ssh://gitserver-user/app1