Freelance Web Engineer

gitoliteで作成したリポジトリをRedmineから参照する

2011-10-19  git, redmine

前のエントリでインストールしたgitoliteを用いて、リポジトリの作成からRedmineとの連携までを行います。

環境は以下の通り:

サーバー
OS: Ubuntu 10.04.1 LTS
git: 1.7.0.4
Redmine: 1.2.1
クライアントPC
OS: Mac OS X 10.7.2
git: 1.7.4.4

1. リポジトリを作成する

クライアントPCでの作業です。管理用リポジトリをcloneします。

[masayuki@local:~]$ cd /tmp/
[masayuki@local:/tmp]$ git clone gitserver:gitolite-admin #=> このやり方は前のエントリの~/.ssh/config の設定をご参考ください。
Cloning into gitolite-admin...
remote: Counting objects: 18, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 18 (delta 4), reused 0 (delta 0)
Receiving objects: 100% (18/18), done.
Resolving deltas: 100% (4/4), done.
[masayuki@local:/tmp]$ cd gitolite-admin/
[masayuki@local:/tmp/gitolite-admin]$ ll
total 0
drwxr-xr-x  3 masayuki  wheel   102B 10 19 14:15 conf/
drwxr-xr-x  3 masayuki  wheel   102B 10 19 14:15 keydir/

設定ファイルに作成するリポジトリ名(仮にnew_repoとします)と、パーミッションを追加します(ハイライト部分)。

[masayuki@local:/tmp/gitolite-admin]$ vi conf/gitolite.conf
repo    gitolite-admin
        RW+     =   masayuki

repo    testing
        RW+     =   @all

repo    new_repo
        RW+     =   masayuki

この設定ファイルをコミット&プッシュします。

[masayuki@local:/tmp/gitolite-admin]$ git add conf/gitolite.conf
[masayuki@local:/tmp/gitolite-admin]$ git commit
[masayuki@local:/tmp/gitolite-admin]$ git push

2. リポジトリのミラーを作成する

gitサーバー側での作業です。適当なディレクトリに、new_repoのミラーを作成します。

[root@server:~]# mkdir -p /var/local/projects/gitrepo
[root@server:~]# cd /var/local/projects/gitrepo/
[root@server:/var/local/projects/gitrepo]# git clone --mirror /home/gitolite/repositories/new_repo.git
[root@server:/var/local/projects/gitrepo]# chown -R gitolite:gitolite new_repo.git

次に、new_repoリポジトリに変更があったときに、先ほど作ったミラーに同期させるため、gitoliteユーザーにスイッチして、ミラー元のフックスクリプトを作成します。

[root@server:/var/local/projects/gitrepo]# su - gitolite
[gitolite@server:~]$ cd repository/new_repo.git/hooks/
[gitolite@server:~/repository/new_repo.git/hooks]$ cat >> post-receive <<EOF
> #!/bin/sh
> /usr/bin/git push --mirror /var/local/projects/gitrepo/new_repo.git
> EOF
[gitolite@server:~/repository/new_repo.git/hooks]$ chmod 700 post-receive

3. 作成したミラーリポジトリをRedmineから参照する

Redmineにブラウザでアクセスし、プロジェクト > 設定 の、「リポジトリ」タブにて以下の通り設定します。

Redmine設定

4. 確認

クライアントPCでリポジトリをクローンし、ファイルコミット&プッシュしたらRedmineに表示されるか確認してみます。

[masayuki@local:/tmp]$ git clone gitserver:new_repo
[masayuki@local:/tmp]$ cd new_repo/

空っぽのリポジトリができました。ファイルを追加してみましょう。

[masayuki@local:/tmp]$ cd new_repo/
[masayuki@local:/tmp/new_repo]$ echo Hello > hello.txt
[masayuki@local:/tmp/new_repo]$ git add hello.txt
[masayuki@local:/tmp/new_repo]$ git commit
[masayuki@local:/tmp/new_repo]$ git push origin master

Redmineの「リポジトリ」画面にアクセスしてみてください。今コミットされたファイルが見えるはずです。

参考

comments powered by Disqus