Gitolite es una capa de control sobre Git, esta nos permitirá ciertas funcionalidades como utilizar un único usuario real en el servidor, proveer de acceso a varios usuarios virtuales y controlar el acceso a los repositorios de forma minuciosa mediante keys ssh.
Instalamos el software con:
Añadimos el usuario con el que correrá el servicio:
Username: gitolite
Full name: gitolite
Uid (Leave empty for default):
Login group [gitolite]:
Login group is gitolite. Invite gitolite into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash git-shell nologin) [sh]:
Home directory [/home/gitolite]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]:
Username : gitolite
Password : <disabled>
Full Name : gitolite
Uid : 1002
Class :
Groups : gitolite
Home : /home/gitolite
Home Mode :
Shell : /bin/sh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (gitolite) to the user database.
Add another user? (yes/no): no
Goodbye!
Toda la configuración de los repositorios se gestiona mediante un repositorio principal llamado gitolite-admin, desde este podremos crear repositorios, administrar permisos y llaves ssh, para poder clonarlo por primera vez debemos importar una key para darle permisos sobre el repo.
Importamos la pubkey del usuario que vaya a clonar:
gitolite setup -pk /tmp/kr0m.pub
Desde el pc donde se tenga la private key asociada a kr0m.pub clonamos el repositorio de configuración:
Desde el repositorio gitolite-admin podremos crear los repositorios que necesitemos o permitir a mas usuarios el poder administrar gitolite, un ejemplo de repositorio podrÃa ser este:
repo REPONAME
RW+ = kr0m
La key de kr0m debe estar en el directorio keydir:
-rw-r--r-- 1 kr0m kr0m 395 Jun 25 2019 keydir/kr0m.pub
Con esto kr0m podrá hacer cuanto se le antoje en el repositorio indicado.
Subimos los cambios:
git add conf/gitolite.conf
git add keydir/kr0m.pub
git commit -m “Asignados permisos a kr0m sobre el repo REPO_NAME”
git push
Ahora kr0m ya podrá utilizar el repositorio REPO_NAME:
Si queremos migrar un repositorio a GitOlite es tan sencillo como crear el repositorio mediante la config de gitolite-admin y subirla:
vi conf/gitolite.conf
repo REPO_NAME
RW+ = kr0m
git commit -m "New REPO_NAME repository to be migrated"
git push
Después nos desplazamos hasta donde se tenga clonado el repositorio a migrar y cambiamos la origin-URL:
git push