
Por motivos de trabajo, tengo la posibilidad de realizar un cambio en el repositorio de control de versiones para el departamento. Por lo que voy a plantear la posibilidad de migrar todo el código desde StarTeam (un SCM desfasado que nadie conoce) a Git (sin duda uno de los mejores SCM que hay actualmente).
Para ello voy a montar una maquina virtual con una distribución linux debian, a la que voy a instalar los siguientes componentes.
- git. Sistema de control de versiones.
- gitolite. Sistema para gestionar los repositorios mediante una única cuenta.
Al final del tutorial dispondréis de una imagen preparada y lista para funcionar con todos los pasos ya realizados. Esta imagen será realizada con VirtualBox un sistema de virtualización gratuito disponible para todos los sistemas (Linux/Mac/Windows)
Lo primero que necesitamos es disponer de un linux funcionando. Para este servidor utilizaré un cd de instalación de debian netinst versión 6.0.3 e instalaré solo lo indispensable para que podamos disponer de un servidor mínimo y funcional. Queda fuera de este tutorial la instalación de debian desde una imagen, por lo que procederé a detallar los pasos una vez disponemos de un sistema linux funcionando correctamente.
Instalación de Git
Primero instalamos las herramientas de git
apt-get install gitCreación de usuario git
Crearemos un usuario con username "git" , que será el encargado de gestionar los repositorios.
sudo adduser --system --shell /bin/bash --gecos 'git version control' --group --disabled-password --home /home/git gitGeneración de Clave RSA del Administrador del repositorio
Antes de instalar gitolite, es necesario que creemos una clave RSA para el usuario que administrará los repositorios GIT. En mi caso, voy a administrarlo mediante una máquina windows, por lo que utilizaré PuTTY. (Queda fuera de este tutorial la instalación y configuración de PuTTY, pero es tan fácil como descargar el fichero putty-installer y ejecutarlo).
A continuación generaremos una clave SSH-2 RSA mediante PuTTY Key Generator. Le daremos a Generate y guardaremos las claves, public key y private key. Tendremos que guardar estas claves.

A continuación subiremos el fichero public key a nuestro servidor (al directorio temporal por ejemplo). El fichero gitserver.pub corresponde a lo que hay dentro del cuadrado (ssh-rsa AAA....)
Instalación de gitolite
La instalación de gitolite puede llevarse a cabo desde debian de la siguiente forma.
apt-get install gitolitePero para esta instalación prefiero instalar la última versión de gitolite, descargandola desde la página web https://github.com/sitaramc/gitolite
Para ello entraremos como usuario root, y nos cambiaremos al usuario git (recordar que el usuario git no tiene password a menos que se lo hayamos dado).
root@gitserver:~# su - gitAñadimos al PATH el directorio $HOME/bin mediante la modificación del .bash_profile con nuestro editor favorito, el contenido ha de contener la siguiente línea.
export PATH=/home/git/bin:$PATH
git@gitserver:~$ cd sitaramc-gitolite/src/
git@gitserver:~/sitaramc-gitolite/src$ ./gl-system-install
using default values for EUID=105:
/home/git/bin /home/git/share/gitolite/conf /home/git/share/gitolite/hooks
Después ejecutaremos el gl-setup desde el path (no desde el directorio src)
git@gitserver:~$ gl-setup /tmp/
gitserver.pub
.ICE-unix/
sitaramc-gitolite-v2.1-31-gf0cedeb.zip
.X11-unix/
git@gitserver:~$ gl-setup /tmp/gitserver.pub
The default settings in the rc file (/home/git/.gitolite.rc) are fine for most
people but if you wish to make any changes, you can do so now.
hit enter...
creating gitolite-admin...
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
creating testing...
Initialized empty Git repository in /home/git/repositories/testing.git/
[master (root-commit) ce2e627] start
2 files changed, 6 insertions(+), 0 deletions(-)
create mode 100644 conf/gitolite.conf
create mode 100644 keydir/gitserver.pubA partir de ahora ya tenemos disponible un servidor GIT con autentificación, para gestionarlo hemos de clonar el siguiente repositorio con la clave privada generada anteriormente (como usuario administrador)
git clone git@server:gitolite-adminEn mi caso, como utilizo una máquina virtual, he de clonar la IP 10.16.77.96, por lo que el cuadro de dialogo del TortoiseGit (el client GIT que utilizo para windows) queda de la siguiente forma.

Si quieres saber como se gestionan los usuarios/grupos en gitolite, puedes consultar mi post "PROXIMAMENTE" donde detallo como se gestionan los repositorios, usuarios y grupos.
Por último, aquí os dejo la imagen VirtualBox con un servidor GIT funcionando con Gitolite. (La imagen se ha subido a MegaUpload para ahorrarme mucho ancho de banda)
http://www.megaupload.com/?d=8ZL5QOOU
http://www.megaupload.com/?d=L4OW5CVC
http://www.megaupload.com/?d=UM14HWG9
http://www.megaupload.com/?d=TSWJK2F8
http://www.megaupload.com/?d=5ZU9ARKY
http://www.megaupload.com/?d=Q7SUT2TZ
Recuerda dejar un comentario y compartir el artículo si te ha sido útil.
Por último, os recomiendo visitar mi último post donde añado gitweb al servidor. Añadir gitweb a nuestro servidor Git gestionado por Gitolite
No hay comentarios:
Publicar un comentario