Este tutorial de como montar un servidor de git con gitolite me ha costado varios dias de prueba y error asi que espero que les sea de provecho y se ahorren dolores de cabeza.

Como es el primer post que hago de GIT entonces voy a hablar un poco sobre el.

Que es GIT?

GIT es un sistema de versionado distribuido, mucho mejor que SVN o CVS en muchos aspectos. Fue desarrollado por Linus Torvalds, a quien ya todos conocen.

No es tan facil de entender como se usa si se lo compara con sistemas de versionado mas viejos, pero tampoco es tan dificil y los beneficios son muchos. Viendo videos en youtube y un par de tutoriales en la web, van a tardar mas o menos 30 a 60 minutos en entenderle y hacer sus primeras pruebas.

GIT para equipos de desarrollo

Una vez que han logrado entender como usarlo en sus proyectos locales, en algun momento se van a ver en la necesidad de entender como usarlo para trabajar en equipo y que todos compartan los archivos, versiones y cambios en los proyectos. Las branches y los merge son muy lindos para facilitar que todos trabajen sin pisarse codigo, sin tener que preocuparse de sobreescribir codigo que otro hizo, etc. Pero antes de eso van a necesitar un servidor online para gestionar todos sus proyectos.

Github es un repositorio para proyectos libres y por una “pequeña” cuota pueden tener tambien repositorios privados. Les aclaro algo: no hay manera mas sencilla de gestionar tus proyectos versionados con git que en Github. Pero si te dedicas al desarrollo de software o desarrollo web muy probablemente no quieres que todo lo que haces sea open source, y tal vez no tengas(o no quieras) pagar por los servicios extra de github.

Alternativas a GitHub

Alternativas que hacen lo mismo que github hay muchas, busquenlas ustedes. Pero tambien existe bitbucket que te deja tener repositorios privados sin pagar nada. Pero solo hasta 5 usuarios.

La otra alternativa es montar tu mismo un repositorio de proyectos git(proyectos versionados con git). Yo he elegido esta opcion por varias razones, pero las principales son:

  • No quiero pagar (ya estoy pagando un vps y si puedo sacarle mas provecho mejor)
  • git se puede usar para hacer deploy de sitios web de manera bastante sencilla y se puede convertir en una alternativa mucho mejor a estar subiendo y bajando archivos por ftp. Eso lo dejo para explicarlo en otro tutorial

Que hace gitolite?

Basicamente nos va a permitir montar un servidor o hosting para git. Gestionar los proyectos que vamos a versionar con git y los usuarios que tendran acceso a esos proyectos. Todo lo que hace gitolite se puede hacer sin usarlo pero requiere mas trabajo, conocimiento y crear un usuario en el server por cada miembro del equipo.

Antes se hacia con gitosis pero este tiene 2 desventajas: esta desactualizado y no tiene la misma potencia para gestionar los permisos.

Ademas en la web pueden encontrar varias otras alternativas que ya incluyen una interfaz grafica web y otras cosas cosillas pero requerían instalar ruby o versiones demasiados nuevas de python y yo no queria arruinar y llenar de porquerias mi servidor, asi que elegi gitolite.

De todas maneras en otro tutorial voy a explicar como agregarle una interfaz web para que se vuelva mas facil aun de manejar y controlar tu repositorio.

Como montar tu servidor git

[![try git](/images/posts/1168/try- git-2071bf0d408e445f8b06fa9600dac9e6-300x225.jpg)](https://paraisolinux.com/wp- content/uploads/2012/09/try-git-2071bf0d408e445f8b06fa9600dac9e6.jpg)En internet se pueden encontrar varias centenas de este mismo tutorial pero por alguna razon todos son distintos, y ninguno me funciono al 100%. Y es probable es que este tampoco te funcione a ti al 100% pero lo voy a explicar muy bien paso a paso para que al menos soluciones un gran porcentaje del problema.

Vas a necesitar:

  • La pc desde donde vas a administrar el repositorio y los proyectos.
  • El servidor. Yo tengo un vps con centOS
  • Acceso al server via ssh
  • git instalado en el server (son unos pocos comandos que pueden ver aqui)

Todo lo haremos desde la [consola](https://paraisolinux.com/animales-en-la- consola/ “Animales en la consola”). A veces en la consola local y a veces en la consola de server. Presten atencion.

En todos los lugares donde dice suserver.com lo deben reemplazar por la direccion de su servidor, puede ser una IP en vez de un dominio.

Paso 1- Nos logueamos como root en el server:

ssh [email protected]

Paso 2- Una vez que ingresan la password y están en la consola del server debemos agregar un usuario y setearle una carpeta que es la que siempre usa gitolite, no la cambien.

useradd -d /var/git git

Paso 3- Ahora le ponemos una clave a ese usuario. No es necesario ni recomendable que sea la misma que la del usuario root.

passwd git

Paso 4- Ahora en la consola local, la de su pc, vamos a crear unas claves ssh que luego usaremos para no tener que estar escribiendo una contraseña cada vez que hagamos un push o pull.

ssh-keygen -t dsa

Paso 5- Ahora vamos a enviar la clave publica para el servidor, es importante elegir el nombre del usuario que va a administrar nuestro repositorio de git. Yo le llame adminGIT. Y no se olviden de reemplazar “su_usuario_local” con el nombre de su usuario local.

Todavia en su consola local escriben:

scp /home/su_usuario_local/.ssh/id_rsa.pub [email protected]:adminGIT.pub

La password que les pide es la del usuario git que crearon en el primer paso.

Paso 6- Ahora se van conectan al server usando el usuario git y su respectiva password.

ssh [email protected]

Paso 7- Ahora deben bajar gitolite usando git. Asi:

git clone git://github.com/sitaramc/gitolite.git

Paso 8- Ahora lo instalamos escribiendo

gitolite/install

Paso 9- Vamos a crear el acceso usando las llaves ssh para que no tengamos que estar poniendo clave cada vez. Es asi:

gitolite/src/gitolite setup -pk adminGIT.pub

Nos mostrara varios mensajes y un par de WARNINGs, nada de que preocuparse.

Para comprobar que salio bien deberian ver en el archivo .ssh/authorized_keys algo referido a gitolite. Lo pueden comprobar con este comando:

cat .ssh/authorized_keys

Y debe decir mas o menos…

gitolite start command="/var/git/gitolite/src/gitolite-shell adminGIT",no-

port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty s….. # gitolite end

Paso 10- Ahora, en la pc del administrador, es decir de aquel que controlara todos los permisos, vamos a clonar un repositorio.

git clone [email protected]:gitolite-admin

La salida en consola sera algo asi:

Cloning into ‘gitolite-admin’… stdin: is not a tty remote: Counting objects: 6, done. remote: Compressing objects: 100% (4/4), done. remote: Total 6 (delta 0), reused 0 (delta 0) Receiving objects: 100% (6/6), done.

Eso es todo, con eso ya queda instalado y listo para empezar a administrar los repositorios y usuarios.

Paso comprobacion- Pueden hacer una pequeña prueba escribiendo:

ssh [email protected] info

Lo que les dira cual es la version de gitolite instalada y cuales son los repositorios existentes.

Es un tema bastante largo por lo que voy a hacer otros posts sobre el tema, por ejemplo: como administrar todo esto, como hacer deploy de sitios web, y como usar herramientas graficas para facilitar todo este trabajo.

Un comentario personal: puede resultar demasiado trabajo aprender a usar git, montar un servidor, etc etc y la verdad que lo es. Pero si trabajan en proyectos medianos-grandes donde participan mas de 1 persona entonces es indispensable porque te ahorra horas de trabajo, dolores de cabezas y discusiones.

URL gitolite: https://github.com/sitaramc/gitolite

Tutoriales base: [marpada](http://www.marpada.net/blog/2012/04/11/creando-un- servidor-git/), [monimandarina](http://monimandarina.blogspot.com.ar/2012/08/el-maravilloso- mundo-de-la-instalacion.html)