Hostear repositorios Git de forma sencilla

Primero que nada, gracias a Cesar por la idea de usar git para backups de ahi me vino toda esa git mania
Cuando se trata de sistemas de control de versiones, los primeros que se me vienen a la mente son git y subversion, por motivos de laziness prefiero el primero, por que lo conozco mejor y por que puedo hacer este setup con los ojos vendados (Not really
)
Bueno, me ahorrare unas lineas diciendo que este setup:
- Usa llaves ssh para la autenticacion de usuarios
- Usa un repositorio git para manejar los repositorios de git (Got it?)
- Solo usa una cuenta de usuario para el manejo de git
Usaremos el proyecto Gitosis, desarrollado por Tommi Virtanen, como se imaginan el proyecto esta hosteado en git
Nos fuimos:
Paso 1: Instalar Gitosis
Instalamos git y setuptools de python:
apt-get install git-core python-setuptools
Ahora clonamos el codigo fuente de gitosis y lo instalamos:
cd /usr/src/
git clone git://eagain.net/gitosis.git
cd gitosis
python setup.py install
Paso 2: Crear el usuario para git
Creamos el usuario git (puede llamarse como ustedes quieran):
adduser \
--system \
--shell /bin/bash \
--gecos 'Control de Versiones Git' \
--group \
--disabled-password \
--home /home/git \
git
Notar que tiene la contraseña deshabilitada, ya que no es necesaria; y tambien que le dimos una shell valida (Que si es necesaria para que ande gitosis).
Ahora para iniciar la instancia de gitosis, necesitaremos una llave pública RSA, si no tienen una pueden crearla con este comando:
ssh-keygen -t rsa -C janitux
Con nuestra llave lista, la copiamos al server que tendra gitosis, e iniciamos finalmente la creacion de la instancia gitosis:
su -c "/usr/bin/gitosis-init < /tmp/id_rsa.pub" git
Y este comando por si tenemos un bug en python-setuptools:
chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
Y comienza la fiesta, clonamos el repositorio de administracion de gitosis:
git clone git@SERVER:gitosis-admin.git
Y ya estamos listos para administrar nuestros repositorios con gitosis!
Paso 3: Crear Repositorios con gitosis
La administración de gitosis es muy sencilla, basta modificar el fichero gitosis.conf del directorio que clonamos en el paso anterior.
La sintaxis de este fichero se basa en directivas de grupos, se define el grupo, en que repositorios tendrán permisos de escritura o lectura; para más información sobre gitosis.conf ver el fichero example.conf
En fin, en este ejemplo crearemos el grupo “equipo”, con “pato” y “pedro” como miembros del grupo y este grupo tendrá permisos de escritura en los repositorios “mirepo” y “repob”. (Nota: el nombre de usuario se determina mediante los ficheros en el directorio keydir, es el nombre del fichero, sin la extensión .pub)
[group equipo]
writable = mirepo repob
members = pato pedro
Tambien tenemos que agregar las llaves publicas de pato y pedro:
cp id_rsa_pato.pub gitosis-admin/keydir/pato.pub
cp id_rsa_pedro.pub gitosis-admin/keydir/pedro.pub
Con esto estariamos listos para dar un commit y que se apliquen los cambios:
git add gitosis.conf keydir/
git commit -a -m "Creado grupo equipo, con pato y pedro como miembros, y permiso de escritura en los proyectos mirepo y repob"
git push
Y finally creamos el repositorio con el commit inicial:
mkdir -p ~/Git/mirepo
cd ~/Git/mirepo
git init
git remote add origin git@SERVER:mirepo.git
## Hacer trabajos, agregas ficheros con git add, y haces un commit con git commit -a
git push origin master:refs/heads/master
FINALLY! estamos listos para seguir trabajando con nuestros repositorios git
Mi única recomendación, sean claros con los nombres de sus mensajes en el commit.
Y obviamente, los creditos van a Garry Dolley, por este howto


