Git es un sistema de control de versiones, esto quiere decir que si cometemos algún error en el desarrollo de alguna aplicación simpre tendremos la opción de retroceder atrás hasta un punto seguro donde todo funcionaba correctamente. En este artículo voy a explicar como montar un servidor git sobre mi distro preferida Gentoo empleando para ello gitolite.
Comenzaremos con la instalación del propio software:
Añadimos el usuario git:
La configuración del propio gitolite se realiza mediante un repositorio, en este paso vamos a añadir la masterkey, esta se utilizará para realizar el clone del repo de config:
ssh-keygen -t rsa
cd ~
mkdir -p ~/bin
git clone git://github.com/sitaramc/gitolite
/var/lib/gitolite/gitolite/install -ln ~/bin
mkdir -p /var/lib/gitolite/.gitolite/logs
cd ~/bin
./gitolite setup -pk ../.ssh/MASTERKEY.pub
echo ’export PATH=/var/lib/gitolite/bin:$PATH’ » ~/.bash_profile
Arrancamos el servicio:
mkdir /var/git
/etc/init.d/git-daemon start
rc-update add git-daemon default
Git se apoya sobre ssh para realizar la transferencia de datos, configuramos cualquier peculiaridad de ssh como cambio de puerto….
Host localhost
HostName localhost
User git
Port 22
Clonamos el repositorio de configuración:
Le indicamos a gitolite quienes somos:
git config –global user.name “kr0m”
Normalmente no se administra el git desde el propio server si no que se dan de alta users administrativos:
vi kr0m.pub
cd ..
cd conf
Añadimos el usuario kr0m y eliminamos el repo test.
repo gitolite-admin
RW+ = id_rsa kr0m
git add keydir/kr0m.pub
git add conf/gitolite.conf
git commit -m “anyadido kr0m al gitolite-admin”
git push
Ahora ya podemos clonar el repo desde el pc donde esté la key de kr0m.
Host A.B.C.D
HostName A.B.C.D
Port 22
A partir de ahora toda la administración se hará desde este pc.
Añadimos nuestro repo:
vi conf/gitolite.conf
repo alfaexploit
RW+ = kr0m
git commit -m “anyadido alfaexploit repo”
git push
Clonamos el repositorio nuevo:
git clone git@A.B.C.D :/alfaexploit
Esto ha sido una breve introducción a gitolite y su configuración, en artículos posteriores hablaremos de git en mas profundidad.