前回、前々回とgitリポジトリを管理するgitoliteをインストールしたあと、アカウント含めの初期設定まわりをやってみました。
今回は実際にサーバ側でgitリポジトリを作ってクライアントからcloneしてみようかと思います。
gitリポジトリの作成にあたっては、SubversionやCVSなどと違って「分散リポジトリ」ということを意識する必要がありそうです。といっても面倒なことをしなくてよく、リポジトリ作成時に
のオプションを指定するだけでよいそうです。
では、サンプル的なリポジトリ(sample01と名づけます)を作成してみます。以下はサーバ側での作業となります。
# pwd /home/git/repositories # mkdir sample01.git # cd sample01.git/ # git init --bare --shared=true Initialized empty shared Git repository in /home/git/repositories/sample01.git/
3行目のmkdirでsample01.gitディレクトリを作成します(共有するリポジトリはリポジトリ名に拡張子.gitを付けるそうだ)。git initコマンドで勝手にリポジトリのディレクトリを作成してくれないのはちょっと不親切に思うかもしれないけれど、gitをまったく意識せずに適当に作業してたディレクトリに対してgit initコマンドを実行することでそのディレクトリを簡単にgitリポジトリ化できるのでこうなっているのでしょう。
さて、sample01.gitディレクトリに移動して、5行目の
# git init --bare --shared=true
でgitリポジトリを作成します。ここで
--bare
が上記したリポジトリに作業コピーを作らない指定、
--shared=true
が共有リポジトリであるという指定になります。git initコマンドが成功するとメッセージとして「空っぽの共有リポジトリが作成されましたよ」と表示されます。
これでgitのリモートリポジトリが作成されました。サーバ側の作業は以上。
次にこのリポジトリをgitoliteで管理できるように設定します。
gitolite-adminをcloneしたクライアントにて、conf/gitolite.confを編集します。作成したsample01リポジトリに対するアクセス権を追記します。
repo sample01 RW = hoge
"hoge"は前回の記事に書いたクライアントBで作成したアカウント(= 公開鍵のファイル名)です。
つまり、sample01リポジトリはhogeアカウントで読み込みと書き込みが出来るっていうことですな。
では、クライアントBから実際に試してみます。
$ git clone git@{サーバ名}:sample01 warning: You appear to have cloned an empty repository. $ cd sample01/ $ ls -a . .. .git
無事にcloneできましたね。
というところで今回は終わり。