Al momento de crear algun proyecto de desarrollo de Software, puede nacer la necesidad de gestionar el proyecto con alguna herramienta gestora de proyectos o control de versiones.
sobre este turorial, vamos a realizar la configuracion de un servidor Git para poder hacer un push desde un cliente sobre un proyecto Git

Funcionamiento del servicio y la configuracion.

Habra un servidor en la nube, que tendra habilitado SSH sobre el puerto 22 y tendra un usuario llamado git el cual gestionara las llaves de conexion publicas de los clientes para permitir acceder al proyecto y realizar una actualizacion o commit, para realizar esto el servidor debera tener tambien git instalado o git-core.

El cliente, tendra instalado git o en su defecto git-core para algunas versiones de GNU-Linux, este sera capaz de inicializar el proyecto con el primer commit y habran clientes que podran clonar el proyecto y colaborar sobre el.

Herramientas.

  • Servidor Ubuntu 16.04 con OpenSSH Server en el puerto 22
  • Cliente Unix con git o git-core instalado para gestionar los proyectos.

Agregando el usuario sobre el servidor

Creamos el usuario sobre el servidor donde estara el proyecto y creamos el directorio de configuracion para ssh donde se almacenaran las llaves publicas de las personas que refrescaran el directorio del proyecto.

$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

abrimos el archivo con nuestro editor de texto preferido y agregamos la llave publica de nuestro cliente que se conectara al proyecto, normalmente la llave publica se encuentra sobre la siguiente ruta /home/usuario/.ssh/id_rsa.pub

cd .ssh/ && nano authorized_keys

pegamos sobre el archivo la llave publica

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3uQADwwKRbjbx+UKjGyFOW96Yv1rheeHluopZYPZ7DkJfM86g/MavReWMYBJRwqXOKoj2NbD2IGz1JFdWuR6FwkjvQB+dflppEvC3oFr48C7YUPu43iiG0lybEw5V2aKWE6UJ/nc4swjv777NOVHvJe2bXomrWk6DWmMHAze9fJmJ25BeuOdc6WXLhFHYvIUrxG41sku2YaNZlOvhGR8Deg7yqyxLt3kCgACzndmUK5aSeUxJvmnQ+xv7Fa6VHOw9CyMag0eG7vA13blUoyN42S16OYiU5lxRkH1xsFrZt92xThJRaN5xwkMDTD5FRN6Fn50hGlVHlB7Jx lalala@deb

una vez agregada la llave publica, procederemos a realizar la prueba de conexion al servidor desde nuestro usuario.

ssh git@ipserver -p22

si todo es correcto accederemos al servidor automaticamente sin solicitud de contraseña.

Creando el proyecto vacio en el servidor

Accedemos al servidor via ssh y con el usuario git y sobre el directorio de trabajo para el usuario vamos a crear un nuevo proyecto vacio.

$ mkdir ProyectoGit.git
$ cd ProyectoGit.git/
$ git init --bare

si todo fue correcto, veremos una salida como esta

"Initialized empty Git repository in /home/git/ProyectoGit.git/"

Creando el proyecto sobre el cliente

Sobre el computador cliente, vamos a crear en nuestro directorio de trabajo un proyecto que sera enviado al servidor para inicializar el proyecto remoto.

configurando git antes del proyecto

antes de crear el proyecto, git tuvo que haberse inicializado con algun usuario, para hacerlo es necesario aplicar los siguientes dos comandos antes de crear el proyecto

git config --global user.email "correo@modiminio.algo"
git config --global user.name "Mi Nombre"

Creamos el proyecto o accedemos a algun directorio que contenga archivo de algun proyecto que deseemos subir al servidor.

$ mkdir ProyectoLocal
cd ProyectoLocal/
git init
git add .
git commit -m "Commit Inicial "
git remote add origin ssh://git@ipserver:22/home/git/ProyectoGit.git

despues de haber configurado el servidor correctamente, podremos realizar un push desde el origen al master.

$ git push origin master
Contando objetos: 4, listo.
Delta compression using up to 4 threads.
Comprimiendo objetos: 100% (2/2), listo.
Escribiendo objetos: 100% (4/4), 258 bytes | 258.00 KiB/s, listo.
Total 4 (delta 0), reused 0 (delta 0)
To ssh://uavlabs.org:2000/home/git/ProyectoGit.git
 * [new branch]      master -> master

Clonando el proyecto Creado.

En este momento cualquier otra persona que haya realizado la configuracion de la llave publica sobre el servidor, podra clonar o subir actualizaciones al proyecto de manera muy simple.

Con el siguiente comando, clonaremos el proyecto

$ git clone ssh://git@ipserver:22/home/git/ProyectoGit.git MiProyectoClonado

este podra realizar modificaciones y solicitar cambios al servidor.

$ git init
$ git add .
$ git commit -m "Cambio Proyecto"
$ git push origin master

para verificar cambios en el servidor y descargarlos utilizamos el comando

git pull origin master 

Desde este momento, cualquier usuario podra clonar el respositorio y realizar actualizaciones sobre el mismo, esto logra una interactividad total entre los desarrolladores al desarrollar un proyecto.