Configurando GIT en Ubuntu Server

Configurando GIT en Ubuntu Server
by Janeth Kent Date: 11-04-2013

GIT es un software de control de versiones diseñado por Linus Torvalds, pero ¿Qué hace diferente a GIT de otros sistemas similares?

GIT es un sistema distribuido. Esto significa que existen repositorios en cada uno de los usuarios (desarrolladores). Personalmente, considero que eso hace que sea mucho más fácil su trabajo, debido a que se pueden hacer muchos commits locales (agrupar cambios y guardarlos) antes de enviar los cambios al servidor de desarrollo o de producción (push). Esto es genial dado que mis cambios solo afectan a mi repositorio local.

Si el cambio que se desea hacer, es lo suficientemente importante, se puede crear un nuevo branch (rama donde puedo hacer cambios mayores). Esto no pasaba con los sistemas centralizados en los cuales el repositorio estaba en un solo lugar (servidor) y por lo tanto, cuando hacías un commit tenías que cerciorarte de que los nuevos cambios no "rompieran" los de otros.

Ahora que ya sabemos qué es GIT vamos a implementarlo. Primero que todo es necesario entender cómo trabaja GIT y saber cómo es la distribución. Como se puede ver en la imagen de abajo, GIT aísla todos los repositorios de tal manera que cada uno pueda trabajar de forma independiente. Además tenemos que contar con un repositorio central, el cual tendrá todos los cambios realizados. Por supuesto, cada desarrollador podría trabajar en una rama (branch). Usualmente, el servidor de producción tiene su propia rama así como el de desarrollo.

Configuración de un repositorio central (servidor)

Vamos a configurar un repositorio central y dos repositorios locales para los
desarrolladores que trabajen en él.

 

Instalar GIT

root@dev:~# sudo apt-get install git

Configuración de usuarios

root@dev:~# git config --global user.name "Argos"

root@dev:~# git config --global user.email [email protected]

Instalación de openssh (necesario para transferir datos mediante el protocolo SSH)

root@dev:~# apt-get install openssh-server

Creación del usuario "git" (propietario del repositorio)

root@dev:~# adduser git

Configuramos el servidor para autenticarnos mediante llaves públicas en vez de hacerlo con contraseñas.

Abrimos el archivo "sshd_config"

  root@dev:~# nano /etc/ssh/sshd_config

Agregamos las siguientes líneas:

  PubkeyAuthentication yes

  AuthorizedKeysFile .ssh/authorized_keys

Ahora, creamos las llaves públicas:

Cambiamos al usuario "git" que creamos anteriormente

  root@dev:~# su git

Nos movemos al "home" del usuario

  git@dev:/home/argos$ cd ~

Creamos la carpeta oculta "ssh" para almacenar las llaves públicas

  git@dev:~$ mkdir .ssh

Creamos el archivo "authorized_keys":

  git@dev:~$ touch .ssh/authorized_keys

Creamos una carpeta para guardar las llaves públicas que nos envíen, así tendremos un mejor control de quienes se están comunicando con nuestro servidor.

git@dev:~$ mkdir desarrolladores

Finalmente, crearemos un directorio que almacenará nuestro repositorio:

git@dev:~$ mkdir dev

git@dev:~$ cd dev

A continuación, inicializamos nuestro primer proyecto, al que llamaremos "cronos"

git@dev:~/dev$ mkdir cronos.git

git@dev:~/dev/cronos.git$ cd cronos.git

git@dev:~/dev/cronos.git$ git --bare init

Hemos inicializado un repositorio vacío que se utlizará como repositorio central. Aquí
encontrarán todos los commit que vayan realizando al proyecto, sin embargo este
repositorio no se usa para desarrollar.

 

Configuración de los repositorios locales

Las siguientes instrucciones deberán seguirse en el ordenador de cada uno de los desarrolladores

El primer paso, será instalar y configurar GIT.

  root@jose:~# apt-get install git

  root@jose:~# git config --global user.name "Jose"

  root@jose:~# git config --global user.email [email protected]

A continuación, generamos la llave pública y la enviamos al servidor:

  root@jose:~# ssh-keygen -t rsa

  Nos pide una frase clave para usar la llave, esta tiene que ser mayor a 4 dígitos. Luego,

  enviamos la llave pública a la carpeta desarrolladores en nuestro servidor.

  root@jose:~# scp /root/.ssh/id_rsa.pub [email protected]:desarrolladores/jose_rsa.pub

A continuación, en el servidor, agregaremos la llave enviada a authorized_keys:

git@dev:~$ cat desarrolladores/jose_rsa.pub >> .ssh/authorized_keys

Nuevamente, en el ordenador del desarrollador, crearemos un directorio para el proyecto:

    root@jose:~# mkdir cronos

    root@jose:~# cd cronos/

    Ahora agregaremos un archivo como prueba

    root@jose:~/cronos# echo "hola HD :P " >> README

Inicializamos GIT

root@jose:~/cronos# git init

Agregar todos los archivos que se desea enviar al servidor También se puede enviar archivo por archivo o por tipo de archivos.

root@jose:~/cronos# git add .

Enviamos nuestro primer commit

root@jose:~/cronos# git commit -m "Prueba del primer commit"

Agregamos la ruta del repositorio central

root@jose:~/cronos# git remote add origin [email protected]:~/dev/cronos.git

Enviamos los cambios al repositorio central

root@jose:~/cronos# git push origin master

Le pedirá que ingrese la frase con la que creo la clave pública

Para que otros desarrolladores puedan recuperar los cambios enviados, se utiliza el comando "pull" (en vez de push):

root@jose:~/cronos# git pull origin master

Para visualizar el historial de cambios se puede utilizar una GUI como GitWeb o sino, por línea de comandos mediante git log:

root@jose:~/cronos# git log --stat
    

Escrito por: Indira Burga (Ingeniera de Sistemas) en http://www.hdmagazine.org (Hackers & Developers Magazine Nº 5)

https://twitter.com/indirabm

http://about.me/indirabm

 
by Janeth Kent Date: 11-04-2013 visitas : 8460  
 
Janeth Kent

Janeth Kent

Licenciada en Bellas Artes y programadora por pasión. Cuando tengo un rato retoco fotos, edito vídeos y diseño cosas. El resto del tiempo escribo en MA-NO WEB DESIGN AND DEVELOPMENT.