My Wiki!

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
<Directory /var/www/git>
   Allow from all
   AllowOverride all
   Order allow,deny
   Options ExecCGI
   <Files gitweb.cgi>
   SetHandler cgi-script
   </Files>
</Directory>
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: <code> $ git clone git:server/project.git project </code> If our clone succeeded, we should now have a local directory called project.


Navigation