Migramos a Git, git + gitolite + gitweb + gitdaemon

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.

Pablo García

Pablo García

http://pablogg.com

Socio fundador de la Cooperativa enreda.coop #FLOSS #InnovacionSocial #ConocimientoAbierto

View Comments