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.