Crear usuarios en Ubuntu
adduser admin (Con este comando se solicitará la clave del usuario)
usermod -a -G sudo admin
Instalacion de Git en Ubuntu Server
- sudo apt-get install git
Toda la instalación se hará con el usuario “admin” previamente creado
Generación de de la llave en el cliente, para este caso supondremos
GitoLite necesita los archivos de clave publica. En mi caso estoy sobre el sistema operativo Windows 7. Por lo que para poder copiar los archivos necesito el programa WinScp.
|
En la maquina cliente se debe generar la clave publica en mi experiencia es importante genera a generar dicha clave con el mismo nombre del usuario de la maquina.
Ejemplo en mi caso el usuario de maquina es sahara entonces se digita
ssh-keygen sahara.pub
Este usuario es el que se se debe copiar a la maquina servidor.
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):
ssh admin@servidor.com
|
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:
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
--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:
sudo su git
cd |
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
|
Agregar otros usuarios y darles permisos al repositorio
Para agregar otros usuarios lo recomendable es que el usuario administrador del repositorio gitolite-admin desde una maquina cliente agrega los usuarios
primer paso: crear la clave publica en cada maquina cliente usando el siguiente comando:
ssh-keygen -t rsa -f "$HOME/.ssh/nombreusuario" -C "Gitolite access (not interactive)" -q -P ""
La version del GitHub presenta esta otra version
ssh-keygen -t rsa -C "your_email@example.com"
Para probar que todo salio bien
ssh -T git@github.com
|
Observacion:
Cuando se genera el archivo con el comando ssh-keygen se pregunta si desea cambiar el nombre del archivo. Al usar esta opción por ejemplo llamar al archivo “aldo” se generan dos archivos aldo y aldo.pub. Esto funciona correctamente al momento de la generación pero falla al momento de autenticarse. La solución es dejar que ssh-keygen genere el nombre automáticamente para que lo deje en id_rsa y id_rsa.pub
segundo paso: copiar la clave publica en directorio gitolite-admin/keydir de la maquina cliente donde se clono el repositorio
tecer paso: usar los siguientes comandos
git add keydir
git commit -m “un comentario”
git push
esto agregara la clave publica al directorio authorize_keys
Branching en GIT
El objetivo es crear a patir del repositorio principal ramas con el fin de desarrollar caracteristicas.
Asi de la rama principal de crearan 3 ramas principales con el fin de controlar el codigo fuente
Desarollo
Certificacion
Release (Rama que se le entrega al cliente)
Lo primero que se debe hacer es crear carpetas donde se albergaran dichas ramas
git branch desarrollo
git branch certificacion
git branch RTM
Para subir las ramas al servidor digitar los siguientes comandos
git push (remote) (branch)
En nuestro caso el repositorio remoto se llama origin
git push origin desarrollo
Las ramas creadas en el servidor no se traerán automáticamente, ya que solamente se traerán la rama master
Para traer la rama deseada se deberá ejecutar el siguiente comando:
$ git checkout -b serverfix origin/serverfix 1
En nuestro caso sería:
git checkout -b desarrollo origin/desarrollo
En caso ya tengamos una rama desarrollo local creada y queramos actualizar los cambios
para borrar una rama nos debemos localizar fuera de la rama que queremos eliminar
git checkout master (Nos posicionamos fuera de la rama que queremos eliminar)
luego eliminamos la rama
git branch -d contabilidad
Configuración de los permisos
El usuario administrador deberá realizar el trabajo desde el repositorio local, para esto ingresará a la carpeta gitolite-admin/conf y editar el archivo de configuración gitolite.conf
@jefe = aabril sahara
@programador = joel rramirez
@lider_programador = rramirez
@equipo = @jefe @programador @lider_programador
repo gitolite-admin
RW+ = @jefe
repo testing
RW+ = @all
repo tiwasierp
RW+ = @jefe
RW desarrollo$ = @programador
RW+ desarrollo$ = @lider_programador
- certificacion$ = @lider_programador @programador
- master$ = @lider_programador @programador
RW tmp/ = @all
RW refs/tags/v[0-9] = @lider_programador
en los accesos a los repositorios
solo los jefes tienen acceso a reiniciar los repositorios
Configuracion de herramienta para hacer el Merge
git mergetool -t kdiff3
$ git config --global merge.tool kdiff3
Si se quiere compartir una rama con los demas el comando es el siguiente
git push origin desarrollo
Para sincronizar con el servidor se usa el siguiente comando
$ git fetch origin
Este comando solo trae el puntero desde el servidor
Para unir el cambio desde el servidor con mi copia se debera ejecutar el siguiente comando
git merge origin/serverfix
Este otro crea una copia local de la rama del servidor a mi maquina
$ git checkout -b desarrollo origin/desarrollo
Para aprender sobre gestion de equipos leer el siguiente link
http://git-scm.com/book/en/Distributed-Git-Contributing-to-a-Project