Git es un sistema distribuido de control de versiones. Todos los desarrolladores tienen un repositorio local en su máquina, que puede estar vinculado a un repositorio remoto en un servidor. De este modo, cada desarrollador trabaja sobre su repositorio sin miedo a contaminar el repositorio remoto, y sólo cuando tiene código estable lo envía al servidor remoto.
Diseñado por Linus Torvalds, que nos permite manejar un gran número de archivos de una manera simple, controlando diferente versiones, entre muchas otras funcionalidades.
Por ejemplo, Git sirve para proyectos como la red pump.io o incluso para compartir libros. Aunque fue creado con el fin de servir a proyectos grandes de software, puede servirnos para ir guardando los apuntes que tomamos en clase.
Primero hay que preparar la Raspberry Pi y posteriormente configurar cada equipo de desarrollo.
Configurar el servidor
Tras conectarse por SSH, hay que instalar el paquete git:
sudo apt-get install git
A continuación hay que crear un directorio al que tengan acceso todos los desarrolladores. Como a la hora de hacer commit Git gestiona los datos de cada desarrollador, no es necesario crear una cuenta para cada desarrollador en la Raspberry Pi. Por lo tanto, el enfoque más sencillo es crear un usuario git que utilizarán todos los desarrolladores:
sudo useradd git
Tras configurar la contraseña del nuevo usuario, hay que crear un repositorio por cada proyecto. Para el proyecto “myrepo” los pasos serían:
cd /home/git
mkdir myrepo.git
cd myrepo.git
git --bare init //Inicialiar un repositorio remoto
Luego crearemos una clave pública SSH en el cliente y la copiaremos a la carpeta home, del usuario anterior, del servidor:
ssh-keygen
scp ~/.ssh/id_rsa.pub git@URL_RASPBERY_PI:
Crearemos el directorio .ssh en la carpeta home del servidor y copiaremos en el archivo authorized_keys:
mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_keys
Modificamos los permisos para que solo podamos acceder nosotros a la clave:
chmod 700 .ssh
chmod 400 .ssh/authorized_keys
Hasta aquí tendremos configurado el acceso a través de SSH sin tener que introducir la contraseña.
Configurar el equipo de desarrollo
Voy a suponer que los equipos de desarrollo utilizan Ubuntu. En primer lugar, si no se ha hecho antes, hay que configurar Git con los datos del desarrollador:
git config --global user.name "Nombre y apellido"
git config --global user.email "Correo electrónico"
A continuación hay que preparar el repositorio en la máquina de desarrollo. Voy a suponer que se trata de un proyecto nuevo, si ya hubiera código disponible hay que colocarse en el directorio principal y ejectuar de “git init” para abajo.
mkdir repo.git
cd repo.git
git init //Inicializar el directorio
touch README.txt //Crear un archivo README
git add . //Seleccionar todos los ficheros del directorio para ser subidos
git commit -m “subida inicial” //Subida al repositorio local
git remote add origin git@URL_RASPBERY_PI:/home/git/repo.git //añadir la raspberry pi como repositorio remoto
git push origin master //copiar el repositorio local en el remoto
Configurar otros equipos de desarrollo
Una vez creados los repositorios, para que un desarrollador cualquiera se sume al proyecto basta que configure sus datos y clone el repositorio en su máquina:
git config --global user.name "Nombre y apellido"
git config --global user.email "Correo electrónico"
git clone git@URL_RASPBERRY_PI:/home/git.myrepo.git
De este modo, dispondrá de un repositorio local en su máquina vinculado con el repositorio remoto de la Raspberry Pi.
Configurar el router
Estos pasos son dependientes del router que se tenga instalado, pero es necesario que los puertos de SSH (22) y Git (9418) estén redirigidos a la dirección IP de las Raspberry Pi y que el Firewall permita la conectividad.
Así, cada vez que se ataque la dirección IP del router (o el dominio freedns), el router dirigirá las peticiones a la Raspberry Pi.