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-docconfiguración de gitweb Instalación de gitweb:
sudo apt-get install highlight gitweb # update /etc/gitweb.conf to customizeconfiguració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-dataReinicia para estar seguro que los datos de /etc/group son los correctos
sudo rebootModificar 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.listCopiar 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.pubIniciamos gitolite:
# EN EL SERVIDOR GIT chmod 666 /tmp/username.pub sudo -H -u gitolite gl-setup /tmp/username.pubModificar 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/repositoriesModificar 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-runAhora 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/runCambiar la que línea que dice:
-ugitdaemonto:
-ugitdaemon:gitolitePara 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.confCambiar el repositorio de prueba a:
repo testing RW+ = @all R = gitweb R = daemonGuarda el fichero, haz un commit, y envíalo al servidor (push):
git commit -a -m "Enable gitweb and git-daemon export for testing." git pushAhora deberías poder probar acceder mediante gitweb y ver el repositorio, y poder clonarlo mediante git:
git clone git://git.server/testing.gitEste 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.