Ubuntuサーバにgit/gitosis/gitwebを入れてみる
Ubuntuサーバにgitを入れてみました。
あわせてgitosisとgitwebも入れてみました。
gitはもう言わずもがなな分散バージョン管理システムですね。
gitosisはgitのレポジトリの権限周りを管理するツールで、gitwebはgitレポジトリのウェブベースの簡易フロントエンドです。
gitを入れる
まずはgitです。
これは簡単にできます。
基本的にはaptでインストールすればOK。
普通に使う分には、特にこれといった設定も必要ありません。
server $ sudo apt-get install git-core
gitが入ったので、試しにサンプルのレポジトリを作ってみます。
server $ mkdir sample.git server $ cd sample.git server $ git init --bare --shared=true
local側で編集して、server側に反映させてみます。
空のレポジトリはクローンできないため、local側で編集したものを、server側にpushします。
local $ mkdir sample.git local $ cd sample.git local $ git init local $ touch test.txt local $ git remote add origin ssh://server.co.jp/git/sample.git local $ git add test.txt local $ git commit -m "init" local $ git push origin master
これでレポジトリのクローンが出来ます。
gitosisを入れる
続いてはgitosisです。
gitosisは、このgitosis自体もgitのひとつのレポジトリとして管理されていて、このレポジトリ内の設定ファイルを書き換えてコミットすることによって、git全体の設定を変える、というものです。
まあ、これだけだとよくわからないので、実際に見るのがいいですね。
aptにあるので、インストール自体はすぐです。
server $ sudo apt-get install gitosis
インストールすると、gitosisユーザとそのホームディレクトリとして/srv/gitosisができます。
gitosis-adminというレポジトリができているので、それをクローンしてきて、設定を変更します。
server $ git clone gitosis@localhost:gitosis-admin.git
server $ cd gitosis-admin.git
gitosis-adminレポジトリをクローンしてくると、keydirとgitosis.confが入っています。
レポジトリにコミットする権限を与えるには、権限を与えたい人の鍵をkeydir以下に配置して、その設定をgitosis.confに書くことで行います。
例えば、sampleレポジトリに対してlocalマシンからmkataigi権限でコミットできるようにするには以下のようにします。
server $ cp ~/local_public_key keydir/mkataigi@local.pub server $ vi gitosis.conf [group gitosis-admin] writable = gitosis-admin sample members = mkataigi@server mkataigi@local server $ git add . server $ git commit -m 'add configuration for mkataigi@local' server $ git push
これで、sampleディレクトリをlocalマシンからコミットできるようになります。
local $ cd ~/sample.git local $ git remote add origin gitosis@server:sample.git local $ git push origin master
gitwebを入れる
続いてはgitwebです。
これはwebベースのgitレポジトリの簡易フロントエンドです。
特にたいしたことが出来るわけではないのですが、ちょっと確認するには便利です。
aptの場合はこれも入っているので、インストールはすぐに終わります。
$ sudo apt-get install gitweb
gitwebの設定ファイルがあるので、レポジトリの配置にあわせて設定します。
ウェブベースなので、CSSなどの読み込みのパスを修正します。
$ sudo vi /etc/gitweb.conf $projectroot = "/srv/gitosis/repositories"; $stylesheet = "/gitweb/gitweb.css"; $logo = "/gitweb/git-logo.png"; $favicon = "/gitweb/git-favicon.png";
あわせてapache側も設定します。
$ cd /etc/apache2/sites-available $ sudo vi gitweb Alias /git /usr/lib/cgi-bin Alias /gitweb /usr/share/gitweb <Directory /usr/lib/cgi-bin> Options ExecCGI AddHandler cgi-script .cgi AllowOverride None DirectoryIndex gitweb.cgi Order allow,deny allow from all </Directory> $ cd ../sites-enabled $ sudo ln -s ../sites-available/gitweb 001-gitweb $ sudo service apache2 restart
これで http://server/cgi-bin/gitweb.cgi で見えます。
gitosisのレポジトリについては、そのままではパーミッションがありません。
しょうがないので変更してしまいます。
$ chmod 755 /srv/git/repositories/*.git
このあたりは、いまいちなので、うまい回避策調査中です。