この機会に実際にGitを使い初めて学んでみることにしました。
慣れてきたらSVNから徐々に移行していきたいつもりです。
尚、この記事は私のメモが目的であり、
申し訳ありませんがあまり役に立たないかもしれません。ご了承ください(汗;)
参考になる情報をお探しの方は、この記事の最後にある参考ページを。
さて、まずは...手始めにサーバ上でGitをインストールします。
server: $ sudo yum install gitさらに、リポジトリとユーザ管理を容易にしてくれる gitoliteをインストール。
server: $ sudo yum install gitoliteこのとき、インストールと同時に、gitoliteというユーザがサーバ上に追加されます。
さて..gitoliteはユーザを認証鍵で識別するため、そのための鍵を作る必要があります。
(参照:この仕組みについては、gitoliteはどうやってユーザを判別しているか - SELECT * FROM life;が参考になりました。)
ですので、クライアントとなるPCで・・・
まず、gitolite用にいつもとは別の鍵を作成します。
client: $ ssh-keygen -t rsa
Generating public/private rsa key pair.これで、"gitolite"と"gitolite.pub"というファイルが、~/.ssh/下に生成されます。
Enter file in which to save the key (/home/hoge/.ssh/id_rsa): ~/.ssh/gitoliteEnter passphrase (empty for no passphrase): #空でEnter
Enter same passphrase again: #空でEnter
Your identification has been saved in /home/hoge/.ssh/gitolite.
Your public key has been saved in /home/hoge/.ssh/gitolite.pub.
The key fingerprint is:
〜〜〜〜
The key's randomart image is:
〜〜〜〜
さらにこの鍵を使うために、~/.ssh/configへ記述をしておきます。
client: $ vi ~/.ssh/config
HOST git.example USER gitoliteこんな感じで。git.exampleは識別名なので何でも構いません。(あとで利用)
HOSTNAME example.com PORT 22 IDENTITYFILE ~/.ssh/gitolite
HOSTNAMEとPORTは、それぞれサーバのアドレスとSSHポート番号を指定します。
あとは、gitolite.pubをサーバの/tmp/あたりに転送します。(SCPか何かで適当に。)
client: $ scp ~/.ssh/gitolite.pub hoge@example.com:/tmp/gitolite.pub今度はサーバ側で、アップロードしたファイルのパーミッションを変更。
server: # chmod a+r /tmp/gitolite.pubさらに、gitoliteとしてログインしなおし...gitoliteの設定を行ないます。
server: $ su - gitolite
server: $ gl-setup /tmp/gitolite.pub
The default settings in the rc file (/var/lib/gitolite/.gitolite.rc) are fine for most
people but if you wish to make any changes, you can do so now.
hit enter... #Enterキーで続行。#続けて.gitolite.rcがエディタで開きますが、気にせずそのまま閉じます。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) 〜] gl-setup /tmp/gitolite.pub 2 files changed, 8 insertions(+), 0 deletions(-)
create mode 100644 conf/gitolite.conf
create mode 100644 keydir/gitolite.pub
server : $ exitこのとき、サーバ上に、"testing"というサンプルのリポジトリと、
"gitolite-admin"というリポジトリが自動生成されます。
このgitolite-admin リポジトリは、Gitolite管理用リポジトリとなります。
なぜかというと・・・・ここに対して設定ファイルをコミットしていくことで
Gitoliteの設定変更(Gitリポジトリの生成といった管理操作も!)ができるという仕組みなのです。面白いですね!!
さて今度はクライアント側から、この"gitolite-admin"リポジトリをgit cloneしてみます。
適当なディレクトリへcloneします。これでcloneされたローカルリポジトリが生成されるわけですね。
(アドレスは実際のサーバアドレスは指定しません。
git.exampleとしているように、先程設定した識別名を指定します。)
git.exampleとしているように、先程設定した識別名を指定します。)
client: $ cd ~
client: $ git clone ssh://git.example/gitolite-admin
git cloneが成功しました。
試しに新しいリポジトリでも作ってみます...(ここではrepo1というリポジトリを作ってみる。)
cloneされたディレクトリ下にある conf/gitlite.conf をエディタで開き、記述を追加します。
client: $ cd gitolite-admin/
client: $ vi conf/gitolite.conf
repo gitolite-adminそして...ローカルリポジトリへのコミット
RW+ = gitolite
repo testing
RW+ = @all
#以下...追加
repo repo1
RW+ = @all
client: $ git add .
client: $ git commit
エディタが起動して、コミットログを編集する画面になるので、以下のように先頭の#を削除して終了。
# Please enter the commit message for your changes. Lines startingローカルリポジトリへのコミットが実行されます。
# with '#' will be ignored, and an empty message aborts the commit.
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: conf/gitolite.conf
[master 21e408a] On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage)
1 files changed, 2 insertions(+), 0 deletions(-)
最後にローカルリポジトリをサーバへプッシュします。
client: $ git pushサーバ側で作業することなくこれだけでリポジトリが追加されます。
なんだこれは便利www
あとは他のユーザをgitoliteに追加するとか、RedmineにGitリポジトリを設定するとかあるのですが、それはまた (^^)/♪
参考にさせていただいたサイト(感謝♪!):
0 件のコメント:
コメントを投稿
お気軽にコメントをお寄せください m(_ _)m♪
"コメントの記入者"欄から[名前/URL]を選ぶと、登録なしでコメント投稿していただけます。