Difference between revisions of "Gitweb"

From ArchWiki
Jump to: navigation, search
(Removed sections about git transport protocols as those are in the "Git" article)
(Lighttpd)
(15 intermediate revisions by 10 users not shown)
Line 1: Line 1:
Gitweb is the default web interface provided with [[git]] itself and is the basis for other git scripts like cgit, gitosis and others.
+
[[Category:Version Control System]]
 +
Gitweb is the default web interface provided with [[git]] itself and is the basis for other git scripts like [[cgit]], [[gitosis]] and others.
  
 
+
==Installation==
=Installation=
+
 
To install gitweb you first have to install git and a webserver. For this example we use apache but you can also use others:
 
To install gitweb you first have to install git and a webserver. For this example we use apache but you can also use others:
 
  pacman -S git apache
 
  pacman -S git apache
  
Next you need to link the current gitweb default to your webserver location. In this example i use the default folder locations:
+
Next you need to link the current gitweb default to your webserver location. In this example I use the default folder locations:
 
  ln -s /usr/share/gitweb /srv/http/gitweb
 
  ln -s /usr/share/gitweb /srv/http/gitweb
  
 
That's it for the "installation". Next is the configuration.
 
That's it for the "installation". Next is the configuration.
  
=Configuration=
+
==Configuration==
==Apache==
+
===Apache===
Add the following to the end of you /etc/httpd/conf/httpd.conf
+
Add the following to the end of your /etc/httpd/conf/httpd.conf
 
  <Directory "/srv/http/gitweb">
 
  <Directory "/srv/http/gitweb">
 
     DirectoryIndex gitweb.cgi
 
     DirectoryIndex gitweb.cgi
Line 28: Line 28:
 
You can put the configuration in it's own config file in /etc/httpd/conf/extra/ but that's up to you to decide.
 
You can put the configuration in it's own config file in /etc/httpd/conf/extra/ but that's up to you to decide.
  
 
+
===Lighttpd===
==Lighttpd==
+
 
If you're using lighttpd, make sure mod_alias, mod_redirect, mod_cgi and mod_setenv are loaded. Add the following to /etc/lighttpd/lighttpd.conf:
 
If you're using lighttpd, make sure mod_alias, mod_redirect, mod_cgi and mod_setenv are loaded. Add the following to /etc/lighttpd/lighttpd.conf:
 +
server.modules += ( "mod_setenv" )
 
  setenv.add-environment = ( "GITWEB_CONFIG" => "/etc/conf.d/gitweb.conf" )
 
  setenv.add-environment = ( "GITWEB_CONFIG" => "/etc/conf.d/gitweb.conf" )
 
  url.redirect += ( "^/gitweb$" => "/gitweb/" )
 
  url.redirect += ( "^/gitweb$" => "/gitweb/" )
Line 39: Line 39:
 
  }
 
  }
  
 
+
===Gitweb config===
==Gitweb config==
+
Next we need to make a gitweb config file. Open (or create if it does not exist) the file {{ic|/etc/conf.d/gitweb.conf}} and place this in it:
Next we need to make a gitweb config file. Open (or create if not existing) the file /etc/conf.d/gitweb.conf and place this in it:
+
{{hc|/etc/conf.d/gitweb.conf|<nowiki>
<pre>
+
 
$git_temp = "/tmp";
 
$git_temp = "/tmp";
  
Line 50: Line 49:
 
# Base URLs for links displayed in the web interface.
 
# Base URLs for links displayed in the web interface.
 
our @git_base_url_list = qw(git://<your_server> http://git@<your_server>);  
 
our @git_base_url_list = qw(git://<your_server> http://git@<your_server>);  
</pre>
+
</nowiki>}}
 +
 
 +
To enable "blame" view (showing the author of each line in a source file), add the following line:
 +
$feature{'blame'}{'default'} = [1];
  
 
Now the the configuration is done, please restart your webserver.
 
Now the the configuration is done, please restart your webserver.
Line 59: Line 61:
 
  /etc/rc.d/lighttpd restart
 
  /etc/rc.d/lighttpd restart
  
 +
===Syntax highlighting===
  
=Adding repositories=
+
To enable syntax highlighting with Gitweb, you have to first install the {{Pkg|highlight}} package from <nowiki>[community]</nowiki>:
To add a repository go to your repository folder. There make your repository like so:
+
pacman -S highlight
 +
 
 +
When highlight has been installed, simply add this line to your {{ic|gitweb.conf}}:
 +
{{bc|<nowiki>$feature{'highlight'}{'default'} = [1];</nowiki>}}
 +
 
 +
Save the file and highlighting should now be enabled.
 +
 
 +
==Adding repositories==
 +
To add a repository go to your repository folder, make your repository like so:
 
  mkdir my_repository.git
 
  mkdir my_repository.git
 
  git init --bare my_repository.git/
 
  git init --bare my_repository.git/
Line 76: Line 87:
 
I assumed that you want to have this repository as "central" repository storage where you push your commits to so the git-daemon-export-ok and --bare are here to have minimal overhead and to allow the git daemon to be used on it.
 
I assumed that you want to have this repository as "central" repository storage where you push your commits to so the git-daemon-export-ok and --bare are here to have minimal overhead and to allow the git daemon to be used on it.
  
That is all for making a repository. You can now see it on your http://localhost/gitweb (assuming everything went fine). You don't need to restart apache for new repositories since the gitweb cgi script simply reads your repository folder.
+
That is all for making a repository. You can now see it on your http://localhost/gitweb (assuming everything went fine). You do not need to restart apache for new repositories since the gitweb cgi script simply reads your repository folder.
 
+
  
=Thanx to...=
+
==Thanks to...==
 
This howto was mainly based on the awesome howto from howtoforge: http://www.howtoforge.com/how-to-install-a-public-git-repository-on-a-debian-server I only picked the parts that are needed to get it working and left the additional things out.
 
This howto was mainly based on the awesome howto from howtoforge: http://www.howtoforge.com/how-to-install-a-public-git-repository-on-a-debian-server I only picked the parts that are needed to get it working and left the additional things out.

Revision as of 20:07, 3 October 2012

Gitweb is the default web interface provided with git itself and is the basis for other git scripts like cgit, gitosis and others.

Installation

To install gitweb you first have to install git and a webserver. For this example we use apache but you can also use others:

pacman -S git apache

Next you need to link the current gitweb default to your webserver location. In this example I use the default folder locations:

ln -s /usr/share/gitweb /srv/http/gitweb

That's it for the "installation". Next is the configuration.

Configuration

Apache

Add the following to the end of your /etc/httpd/conf/httpd.conf

<Directory "/srv/http/gitweb">
   DirectoryIndex gitweb.cgi
   Allow from all
   AllowOverride all
   Order allow,deny
   Options ExecCGI
   <Files gitweb.cgi>
   SetHandler cgi-script
   </Files>
   SetEnv  GITWEB_CONFIG  /etc/conf.d/gitweb.conf
</Directory>

You can put the configuration in it's own config file in /etc/httpd/conf/extra/ but that's up to you to decide.

Lighttpd

If you're using lighttpd, make sure mod_alias, mod_redirect, mod_cgi and mod_setenv are loaded. Add the following to /etc/lighttpd/lighttpd.conf:

server.modules += ( "mod_setenv" )
setenv.add-environment = ( "GITWEB_CONFIG" => "/etc/conf.d/gitweb.conf" )
url.redirect += ( "^/gitweb$" => "/gitweb/" )
alias.url += ( "/gitweb/" => "/usr/share/gitweb/" )
$HTTP["url"] =~ "^/gitweb/" {
       cgi.assign = (".cgi" => "")
       server.indexfiles = ("gitweb.cgi")
}

Gitweb config

Next we need to make a gitweb config file. Open (or create if it does not exist) the file /etc/conf.d/gitweb.conf and place this in it:

/etc/conf.d/gitweb.conf
$git_temp = "/tmp";

# The directories where your projects are. Must not end with a slash.
$projectroot = "/path/to/your/repositories"; 

# Base URLs for links displayed in the web interface.
our @git_base_url_list = qw(git://<your_server> http://git@<your_server>); 

To enable "blame" view (showing the author of each line in a source file), add the following line:

$feature{'blame'}{'default'} = [1];

Now the the configuration is done, please restart your webserver. For apache:

/etc/rc.d/httpd restart

Or for lighttpd:

/etc/rc.d/lighttpd restart

Syntax highlighting

To enable syntax highlighting with Gitweb, you have to first install the highlight package from [community]:

pacman -S highlight

When highlight has been installed, simply add this line to your gitweb.conf:

$feature{'highlight'}{'default'} = [1];

Save the file and highlighting should now be enabled.

Adding repositories

To add a repository go to your repository folder, make your repository like so:

mkdir my_repository.git
git init --bare my_repository.git/
cd my_repository.git/
touch git-daemon-export-ok
echo "Short project's description" > description

Next open the "config" file and add this:

[gitweb]
        owner = Your Name

This will fill in the "Owner" field in gitweb. It's not required.

I assumed that you want to have this repository as "central" repository storage where you push your commits to so the git-daemon-export-ok and --bare are here to have minimal overhead and to allow the git daemon to be used on it.

That is all for making a repository. You can now see it on your http://localhost/gitweb (assuming everything went fine). You do not need to restart apache for new repositories since the gitweb cgi script simply reads your repository folder.

Thanks to...

This howto was mainly based on the awesome howto from howtoforge: http://www.howtoforge.com/how-to-install-a-public-git-repository-on-a-debian-server I only picked the parts that are needed to get it working and left the additional things out.