I tried gitweb and wasted most of a day trying to get apache to stop escaping “;” with “%3”, took a hack at a few of the php based git browsers – no luck. That was until I came accross cgit.
First setup the prereques. I had most of what I needed but was missing libcurl, so I ran the following command to add that. I am sure you will need a few other like git-core and build-essentials. sudo apt-get install libcurl4-openssl-dev
git clone git://github.com/metajack/cgit.git
cd cgit/
git submodule init
git submodule update
make
I skip the make install step because I put the binary in a seprate cgi-bin directory anyway.
sudo cp ./cgit /usr/lib/cgi-bin/cgit.cgi
Of course if you use a different location for your cgi-bin you will want to put that in the above command
If /var/www/htdocs/ is your docroot (which mine is) you will want to move the css and png files there:
cp ./cgit.css /var/www/htdocs/
cp ./cgit.png /var/www/htdocs/git-logo.png # the default logo
Create a file at /etc/cgit and add the following:
virtual-root=/git/
enable-index-links=1
enable-log-filecount=1
enable-log-linecount=1
snapshots=tar.gz tar.bz zip
# List of repositories
repo.url=red_baron
repo.path=/home/git/repositories/red_baron.git
repo.desc=Ace of the skies
repo.owner=Reb Baron
repo.group=project1
repo.url=sub1
repo.path=/home/git/repositories/sub1.git
repo.desc=Sub1 of Project1
repo.owner=Joe Cool
repo.url=sub1
repo.path=/home/git/repositories/sub1.git
repo.desc=Sub2 of Project1
repo.owner=Snoopy
Add the following under your virtual host tag:
# Add the cgi-bin if you don't have one already
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
# Add the trailing slash
RewriteRule ^/git$ /git/ [R]
# Pretty urls
RewriteRule ^/git/(.*)$ /cgi-bin/cgit.cgi/$1 [PT]
At this point you should be able to restart apache and browse to your git repos at http://hostname/git