Instalação de Servidor GIT sobre WebDAV e gitweb no Fedora
Este post documenta o procedimento de instalação de um servidor GIT com acesso via WebDAV e gitweb. O objetivo desta instalação é ter um servidor de GIT que possa ser utilizado exatamente como um servidor SVN, sem grandes traumas na transição de SVN para GIT. Por exemplo, deseja-se ter o servidor GIT como um centralizador de repositórios, no qual os usuários possam usar “git clone/pull/push” da mesma forma que usariam “svn update/commit”.
A instalação foi realizada no Fedora 11.
Instalação do Servidor Web
Instalar o servidor Apache:
yum install httpd
Por default, o arquivo de configuração do Apache já carrega os módulos do WebDAV.
cat /etc/httpd/conf/httpd.conf ... LoadModule dav_module modules/mod_dav.so ... LoadModule dav_fs_module modules/mod_dav_fs.so
Colocar o Apache na inicialização do sistema:
chkconfig --levels 235 httpd on /etc/init.d/httpd start
Configuração do WebDAV
Criar o arquivo git.conf:
cat /etc/httpd/conf.d/git.conf
Alias /git "/srv/git"
<Directory "/srv/git">
DAV on
Options +Indexes +FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AuthType Basic
AuthName "Git"
AuthUserFile /etc/httpd/passwd.git
Require valid-user
</Directory>
Criar o arquivo de senhas a autenticação do tipo Basic:
htpasswd -c /etc/httpd/passwd.git usuario
Criar diretório dos repositórios para testar a autenticação:
mkdir /var/git
Reiniciar o Apache e testar o endereço http://localhost/git:
/etc/init.d/httpd restart
Instalação e Configuração do GIT
yum install git
Criação de um Repositório
Criar um repositório de teste:
mkdir -p /srv/git/myproject cd /srv/git/myproject git --bare init Initialized empty Git repository in /srv/git/myproject/
Habilitar o hook de post-update:
cd /srv/git/myproject/ cp hooks/post-update.sample hooks/post-update chmod +x hooks/post-update
O conteúdo do hooks/post-update deve ser:
cat hooks/post-update exec git update-server-info
Executar manualmente a primeira vez:
./hooks/post-update
Dar permissão correta para o usuário do Apache (no caso do Fedora é apache):
chown -R apache:apache /srv/git/myproject/
Testando
No cliente, instalar o GIT (neste caso, o teste foi feito no localhost mesmo):
yum install git
Configuracao mínima:
git config --global user.name "My Name" git config --global user.email "my@email.com"
Configurar usuário e senha do servidor:
cat ~/.netrc machine localhost login usuario password senha
Testar acesso ao servidor via curl:
curl --netrc --location -v http://localhost/git
Clonar o repositório remoto:
git clone http://localhost/git/myproject Initialized empty Git repository in /home/user/myproject/.git/
Adicionar alguma coisa ao repositório:
cd myproject echo testando > teste.txt git add teste.txt git commit
Enviar modificações ao servidor:
git push origin master
Fetching remote heads...
refs/
refs/tags/
refs/heads/
updating 'refs/heads/master'
from 0000000000000000000000000000000000000000
to 87366d467e2dfcc6057bf7d5e112b79ede984861
sending 3 objects
done
Instalação e Configuração do gitweb
Instalar gitweb:
yum install gitweb
Criar arquivo gitweb.conf para o Apache:
cat /etc/httpd/conf.d/gitweb.conf Alias /gitweb /var/www/git <Directory /var/www/git> Options +ExecCGI AddHandler cgi-script .cgi DirectoryIndex gitweb.cgi </Directory>
Criar arquivo de configuração do gitweb:
cat /etc/gitweb.conf
$projectroot = '/srv/git/';
@git_base_url_list = ('http://localhost/git')
Reiniciar o Apache e testar o endereço http://localhost/gitweb:
/etc/init.d/httpd restart
Para mais informações
* 8 Ways To Share Your GIT Repository: http://www.jedi.be/blog/2009/05/06/8-ways-to-share-your-git-repository
* How to use HTTP Basic Authentication with git: http://maymay.net/blog/2008/08/08/how-to-use-http-basic-authentication-with-git
* How To Set Up WebDAV With Apache2 On Fedora 10: http://www.howtoforge.com/how-to-set-up-webdav-with-apache2-on-fedora-10