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.