
Gitolite te permite hospedar repositorios git en un servidor central, con un fino control de acceso y muchas (¡muchas!) características poderosas.
Gitolite — Hospeda repositorios git en un servidor Ubuntu
Si deseas habilitar un servidor como repositorio central para tus proyectos git y de esa forma facilitar la colaboración con varias personas sin necesidad de recurrir a algo como github, entonces gitolite es para ti.
Escenario
- Servidor: donde queremos hospedar los repositorios git, aquí se va a instalar gitolite.
El URL del servidor de ejemplo es: servidor.com
(también puedes usar una dirección IP)
El usuario de ejemplo con privilegios de administrador es: admin
- Cliente: la máquina local desde donde se van a administrar los usuarios, los repositorios y los accesos.
En el cliente
En tu máquina debes tener disponible tu llave pública en ~/.ssh/id_rsa.pub, si no es así genérala con:
Ya que cuentes con la llave pública ~/.ssh/id_rsa.pub, cópiala a tu servidor, la vas necesitar para la configuración inicial de gitolite.
Para copiarla puedes usar scp. El siguiente comando copiará nuestra llave pública al $HOME de la cuenta admin en el servidor, con el nombre de admin.pub:
scp ~/.ssh/id_rsa.pub admin@servidor.com:/home/admin/admin.pub |
Sustituye los datos del ejemplo por los tuyos donde sea necesario.
En el servidor
Inicia sesión en el servidor con una cuenta que pueda usar sudo (en nuestro caso particular es admin):
Si sólo tienes la cuenta de
root para administrar tu servidor, te recomiendo que leas esto:
Securing Your Server
Instala git usando esta guía:
Cómo compilar e instalar git en Ubuntu desde código fuente
Después crea un usuario llamado git que va a fungir como el administrador de los repositorios:
sudo adduser
--system
--shell /bin/bash
--gecos 'git version control'
--group
--disabled-password
--home /home/git
git |
No necesita contraseña ya que no pretendemos iniciar sesión con él directamente.
Accede al usuario git y ve a su $HOME:
Asegúrate de que ~/.ssh/authorized_keys está vacío o no existe (para el usuario git).
Copia el archivo /home/admin/admin.pub a /home/git/admin.pub:
cp /home/admin/admin.pub $HOME |
Ejecuta los siguientes comandos:
git clone git://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
echo "PATH=$HOME/bin:$PATH" > ~/.bashrc
source ~/.bashrc
gitolite setup -pk admin.pub |
Listo, cierra la sesión del usuario git y después termina la del usuario admin.
Agregar usuarios y repositorios desde la máquina cliente
De regreso en tu máquina local, ahora vas a ver cómo crear repositorios y autorizar usuarios para que operen con ellos.
En gitolite, los usuarios, repositorios y reglas de acceso se administran haciendo cambios a un repositorio especial llamado gitolite-admin y surten efecto al subirlos (con un push) al servidor.
No debes agregar de forma manual en el servidor repositorios o usuarios.
Utiliza siempre el repositorio local para ese propósito.
Para administrar tu instalación de gitolite, clona el repositorio gitolite-admin a tu máquina:
git clone git@servidor.com:gitolite-admin.git |
Si el comando anterior te solicita una contraseña, algo salió mal. Revisa los pasos con cuidado.
Ahora, si le das cd gitolite-admin, verás dos subdirectorios en él: conf y keydir
Para agregar a los usuarios juan, maria y pepe, obtén sus llaves públicas y mételas en keydir como juan.pub, maria.pub y pepe.pub respectivamente.
Para agregar un repositorio nuevo llamado foo y dar diferentes niveles de acceso a estos usuarios, modifica el archivo: conf/gitolite.conf, ejemplo:
repo gitolite-admin
RW+ = admin
repo foo
RW+ = juan
RW = maria
R = pepe |
Después de hacer estos cambios en el cliente, hazlos efectivos en el servidor con:
git add conf
git add keydir
git commit -m 'Se creó el repositorio foo, se dio acceso a juan, maria y pepe'
git push |
Cuando finalice el push, gitolite agregará los nuevos usuarios a /home/git/.ssh/authorized_keys en el servidor, así como también creará un nuevo repositorio vacío llamado foo.
Subir un repositorio existente al servidor
Para poner un repositorio local en el servidor, para que otras personas —a las que tú les des acceso— lo puedan clonar y trabajar, debes primero crear un espacio para él.
Esto lo haces modificando el archivo gitolite-admin/conf/gitolite.conf como se mostró arriba, haz commit de los cambios, y súbelos con push.
Después, entra al directorio del repositorio local en cuestión y teclea:
git remote rm origin
git remote add origin git@servidor.com:mi-nuevo-repositorio.git
git push origin master |
Listo, ahora tu repositorio local ha sido clonado al servidor y otros usuarios pueden tener acceso a él con:
git clone git@servidor.com:mi-nuevo-repositorio.git |
Más información
Para conocer más sobre las reglas de acceso y otras características de gitolite, recomiendo leer el README del proyecto y también la sección Git on the Server – Gitolite del git book.
Referencias
Setting up a gitolite server in Ubuntu