HowTo configure Redmine for advanced git integration » History » Version 1

Felix Schäfer, 2010-07-13 12:08
First draft

1 1 Felix Schäfer
h1. HowTo configure Redmine for advanced git integration
2 1 Felix Schäfer
3 1 Felix Schäfer
h2. Scope
4 1 Felix Schäfer
5 1 Felix Schäfer
This HowTo explains how to serve git repositories on apache through the http-based "git-smart-http protocol":http://progit.org/2010/03/04/smart-http.html introduced in git 1.6.6. The git-smart-http offers various advantages over ssh or git-based access: you can use redmine access control as-is, no need for extra ssh keys or whatnot, you can secure it through SSL as needed, and there's generally less problems with firewalls and https/https ports than exist with ssh and git ports. git-smart-http also doesn't have some of the drawbacks of its "dumb" predecessor, as it doesn't require any complex DAV setup.
6 1 Felix Schäfer
7 1 Felix Schäfer
This HowTo is mainly written from memory and was conducted on a setup which was already serving [[Repositories_access_control_with_apache_mod_dav_svn_and_mod_perl|svn repositories integrated with redmine]], so it might be possible that I forgot some things or take them for granted. This is a wiki page, feel free to correct or amend anything you find lacking :-)
8 1 Felix Schäfer
9 1 Felix Schäfer
h2. Prerequisites
10 1 Felix Schäfer
11 1 Felix Schäfer
* Apache with mod_perl (access control)
12 1 Felix Schäfer
* git (version at least 1.6.6)
13 1 Felix Schäfer
* A way to serve git-smart-http
14 1 Felix Schäfer
** mod_cgi (or mod_cgid) if you want to use the stock "git-http-backend":http://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html
15 1 Felix Schäfer
** a rack server if you want to use "grack":http://github.com/schacon/grack (basically a rack wrapper around the right git commands)
16 1 Felix Schäfer
17 1 Felix Schäfer
You should already have a rack server to run redmine, and that's why I chose grack as the backend and which I will describe in this tutorial. Using the stock git-http-backend should be quite straightforward though.