====== Git server on Debian ======
Well, we'll focus on how to install git and gitweb on the Debian distribution. gitweb is a git web interface written in Perl, and can be used as a CGI script or as mod_Perl, and it will allow us browsing a git repository. Let's start.
Getting git and gitweb packages from the Debian repository with aptitude:
$ sudo aptitude install git-core gitweb
Create some useful directories: /data/repos/git (the git repository), /var/www/git contains the gitweb.cgi:
$ sudo mkdir /var/www/git
$ [ -d "/var/cache/git" ] || sudo mkdir /var/cache/git
In our example the directory /var/www is Apache's DocumentRoot; there is a /etc/apache2/conf.d/gitweb. Make a git configuration in the Apache configuration directory:
$ sudo cat vim /etc/apache2/conf.d/git
Allow from all
AllowOverride all
Order allow,deny
Options ExecCGI
SetHandler cgi-script
DirectoryIndex gitweb.cgi
SetEnv GITWEB_CONFIG /etc/gitweb.conf
Move gitweb.cgi, logo and css files into /var/www/git:
$ sudo mv /usr/share/gitweb/* /var/www/git
$ sudo mv /usr/lib/cgi-bin/gitweb.cgi /var/www/git
Make some changes in /etc/gitweb.conf:
$ sudo vim /etc/gitweb.conf
$projectroot = '/data/repos/git/';
$git_temp = "/tmp";
#$home_link = $my_uri || "/";
$home_text = "indextext.html";
$projects_list = $projectroot;
$stylesheet = "/git/gitweb.css";
$logo = "/git/git-logo.png";
$favicon = "/git/git-favicon.png";
Reload the git config into Apache:
$ sudo /etc/init.d/apache2 reload
First, initialize git in our project by creating a repository and setting name and email:
$ cd /var/cache/git/
$ mkdir project.git
$ cd project.git
$ git init
$ echo "Short project's description" > .git/description
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"
$ git commit -a
Marking a repository as exported is done by using the file git-daemon-export-ok.
$ cd /var/cache/git/project.git
$ touch .git/git-daemon-export-ok
Git has a mini-server for git repositories. It is small and cute, and suitable for sharing repositories. Starting git daemon with our repository as base path, base-path should not end in a slash.
$ git daemon --base-path=/var/cache/git --detach --syslog --export-all
Now the git daemon is running on port 9418 on your computer, we can start to use it with the URL git:///location. You can do a copy to your development environment:
$ git clone git://server/project.git project
If our clone succeeded, we should now have a local directory called project.