How To Install A Public Git Repository On A Debian Server

Submitted by mezgani (Contact Author) (Forums) on Thu, 2009-03-26 11:28. :: Debian How To Install A Public Git Repository On A Debian Server

Git is a free distributed revision control, was initially created by Linus Torvalds for Linux kernel development. It is primarily developed on Linux, but can be used on other Unix operating systems including BSD, Solaris and Darwin. Git is extremely fast on POSIX-based systems such as Linux. It differs from svn and creates a private repository on a remote server too.

Some popular projects using Git:

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: /var/cache/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; make a git configuration in the Apache configuration directory:

sudo 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
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 = '/var/cache/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" &gt; .git/description

git config --global "Your Name"

git config --global ""

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.

Copyright (c) 2009 mezgani Permission is granted to copy, distribute and/or modify the content of this page under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is available at