Ultimamente es bastante habitual conocer que proyectos muy importantes están migrando su sistema de control de versiones a Git http://es.wikipedia.org/wiki/Git. Algunos proyectos que han migrado a git:
– Drupal: http://git.drupalcode.org/
– Genome: http://git.gnome.org/
– Eclipse: http://git.eclipse.org/c/
La mayoría migra desde subversion http://es.wikipedia.org/wiki/Subversion, pero es realmente necesario migrar? Qué ventajas ofrece?
Bueno en el wiki de Git, nos dan algunas pistas: https://git.wiki.kernel.org/index.php/GitSvnComparison

– Git es mucho más rápido que Subversion
– Subversion le permite ver sobre un árbol de un depósito; Git requiere clonar todo el repositorio (incluyendo la historia) y crear una copia de trabajo.
– Los Repositorios Git son mucho más pequeños que Subversiones (del proyecto Mozilla, 30 veces más pequeño)
– Git fue diseñado para ser totalmente distribuidos desde el inicio, permitiendo que cada desarrollador tenga control completo en locale
– Las ramas son el recurso más sencillo y menos pesado que Subversion
– Las ramas en Git llevar toda su historia
– La fusión en Git no requiere que usted recuerde la revisión a partir de la que se fusionó
– Git proporciona una mejor auditoría de la rama y combinar eventos
– Los formatos de archivo de repositorio Git son simples, por lo que la reparación es fácil y la corrupción es muy rara.
– Moverse a través de versiones es más simple en Subversion, ya que utiliza números de revisión secuencial (1,2,3,..); Git usa impredecible hash SHA-1. Volver hacia atrás en Git es fácil con el “^” la sintaxis, pero no hay una manera fácil de moverse hacia adelante.
En nuestro caso hemos apostado por un sistema basado en: git + gitolite + gitweb + gitdaemon. Y la instalación se puede realizar siguiendo estos pasos:

Lo primero es descargar los programas necesarios: git, gitolite, git-daemon, y gitweb, en este caso para nuestra servidor Ubuntu Server 10.04 pero igualmente sirve para cualquier distro.
configuración de git
Instalación de git

sudo apt-get install git-core git-doc

configuración de gitweb
Instalación de gitweb:

sudo apt-get install highlight gitweb
# update /etc/gitweb.conf to customize

configuración de gitolite
Instalación de gitolite:

sudo apt-get install gitolite

(optional setup so that gitolite doesn’t complain about not having user and email setup)

sudo su gitolite
git config –global user.name “gitolite”
git config –global user.email gitolite@your.domain
exit

Añade el usuario www-data al grupo gitolite para que gitweb pueda acceder a los repositorios.

sudo usermod -a -G gitolite www-data

Reinicia para estar seguro que los datos de /etc/group son los correctos

sudo reboot

Modificar la configuración de gitweb para que use los repositorios de gitolite:

sudo emacs /etc/gitweb.conf
# change $projectroot to /var/lib/gitolite/repositories
# change $projects_list to /var/lib/gitolite/projects.list

Copiar tú clave pública de tu maquina local en el servidor git:

DE TU MAQUINA LOCAL

scp ~/.ssh/id_rsa.pub git.server:/tmp/username.pub

Iniciamos gitolite:

EN EL SERVIDOR GIT

chmod 666 /tmp/username.pub
sudo -H -u gitolite gl-setup /tmp/username.pub

Modificar los permisos de los repositorios que tengamos para permitir exportar a gitweb y git-daemon:

sudo chmod g+r /var/lib/gitolite/projects.list
sudo chmod -R g+rx /var/lib/gitolite/repositories

Modificar la configuración para que los nuevos repositorios tengan permisos para gitweb y git-damen puedan exportarlos:

sudo emacs /var/lib/gitolite/.gitolite.rc
# change to $REPO_UMASK = 0027; # gets you ‘rwxr-x—‘

Configuración de git-daemon

sudo apt-get install git-daemon-run

Ahora necesitamos cambiar la configuración de de git-daemon para que se pueda ejecutar con el usuario gitdaemon y el grupo de gitolite (que debe tener acceso para leer en los directorios de los repositorios).

sudo emacs /etc/sv/git-daemon/run

Cambiar la que línea que dice:

-ugitdaemon

to:

-ugitdaemon:gitolite

Para probar que todo está funcionando, clonar el repositorio gitolite-admin.git que es creado automaticamente por la instalación de gitolite y habilita que gitweb y git-daemon la exportación

FROM YOUR LOCAL MACHINE

git clone gitolite@git.server:gitolite-admin.git
cd gitolite-admin
emacs conf/gitolite.conf

Cambiar el repositorio de prueba a:

repo testing
RW+ = @all
R = gitweb
R = daemon

Guarda el fichero, haz un commit, y envíalo al servidor (push):

git commit -a -m “Enable gitweb and git-daemon export for testing.”
git push

Ahora deberías poder probar acceder mediante gitweb y ver el repositorio, y poder clonarlo mediante git:

git clone git://git.server/testing.git

Este HOWTO se lo debemos al blog Computer Camp http://computercamp.cdwilson.us/git-gitolite-git-daemon-gitweb-setup-on-… ,que dedicó el 31 de Diciembre un rato a describir de forma clara y concisa la instalación de git en ubuntu. Gracias. Thanks Christopher Wilson.