Le haré una oferta que no podrá rechazar

Ya te has dado cuenta de que manejar información genera problmeas problemas, tenemos muchos cambios en el contenido de nuestros ficheros vamos teniendo distintas versiones a partir de un original, pero ¿cómo puedo gestionar estas versiones? La respuesta es simple: usa un sistema de control de versiones. Nuestra recomendación es utilizar .

Workflow para un usuario sin servidor

Al utilizar Git convertimos el directorio de nuestro proyecto en un repositorio donde se generan algunos archivos que permiten gestionar los ficheros del proyecto. Cuando no dispongamos de un servidor, podremos crear este repositorio desde la interfaz gráfica de RStudio, siempre y cuando hayamos instalado Git previamente.

El procedimiento para “capturar” el estado del repositorio tiene dos etapas básicas:

  • Añadir al índice (add): Cada fichero creado en el directorio se ha de añadir al índice para su seguimiento (track); no se añaden directorios vacíos.

  • Comprometer los cambios (commit): A medida que se realizan los cambios en los ficheros y tenemos cambios “relevantes” se compromete el estado. Esto genera una nueva versión (head). Cada commit tiene una etiqueta, de modo que puedes recuperar versiones anteriores de tus ficheros en cualquier momento.

Git: una aproximación con RStudio

Si no dispones de un servidor donde guardar tu proyecto no pasa nada; puedes seguir aprovechando la potencia de Git. Simplemente debes crear un nuevo proyecto o abrir uno existente. Luego haz clic sobre el fichero .Rproj para desplegar las opciones del proyecto y establecer Git como sistema de control de versiones:

El siguiente paso consistirá en indicar al sistema qué ficheros deseamos añadir al índice y hacer un primer commit. Es importante tener en cuenta que no se registrarán los cambios que se produzcan en ficheros no añadidos al índice:

Posteriormente podremos añadir nuevos ficheros y/o comprometer los cambios que se produzcan en los ficheros incluidos en el índice:

Workflow para n usuarios con servidor

Esta se trata de la opción más interesante por varios motivos. Por un lado nos permite trabajar tanto en solitario como de forma colaborativa con otros usuarios; por otro lado, nuestro proyecto siempre se guardará de forma segura en el servidor, pudiendo acceder a él desde diferentes dispositivos.

El esquema básico de trabajo con un servidor Git sería el siguiente:

  1. Crear un repositorio en el servidor.

  2. Descargar el repositorio en nuestro ordenador

    1. Ejecutar un git clone para realizar la primera descarga del repositorio en nuestro ordenador.

    2. Ejecutar un git pull para descargar posibles modificaciones realizadas por algún usuario.

  3. Realizar los cambios necesarios en los ficheros pertinentes.

  4. Añadir y comprometer los cambios realizados.

  5. Subir al servidor la versión actual: git push.

  6. Volver al paso 2 tantas veces como sea necesario.

Git: creando un repositorio en GitLaB

Es posible utilizar servidores Git a través de diferentes plataformas. Para este ejemplo, nosotros hemos escogido GitLab. Existen otras alternativas como GitHub y los servicios de GitLab de la Universidad de Murcia.

En primer lugar debes acceder al portal de GitLab y registrar una cuenta. Una vez registrado, puedes crear un nuevo proyecto de forma muy sencilla; solamente necesitas darle un nombre y determinar el nivel de visibilidad del repositorio, que por defecto es privado. Opcionalmente también es posible redactar una descripción del proyecto.

Cuando hayas creado el repositorio, tendrás que seguir algunos pasos antes de poder poder clonarlo en tu ordenador utilizando una URL. Estas instrucciones aparecen en la propia página de GitLab cuando se ha creado el proyecto:

  1. Definir un nombre de usuario y correo electrónico en las opciones globales de Git:

    git config --global user.name "Tu nombre"
    git config --global user.email "Tu correo"
  2. Generar una clave SSH para poder transferir información desde el repositorio remoto; más información aquí.

    Esta clave está formada por dos partes: una clave pública y otra privada. Las claves se almacenan en sendos ficheros, por defecto id_rsa y id_rsa.pub, en el subdirectorio ~/.ssh/. La clave privada no debe ser copiada a ningún otro ordenador. Por otro lado, el nombre de los ficheros de las claves es importante y puede darse en función del uso o del usuario, por ejemplo: gitlab_rsa y gitla_rsa.pub.

  3. Crear un nuevo repositorio y hacer un primer commit:

    # GitLabUsername: cámbialo por tu nombre de usuario de GitLab 
    # tuProyecto: cámbialo por el nombre del proyecto de GitLab 
    
    git clone https://gitlab.com/GitLabUsername/tuProyecto.git
    cd tuProyecto
    touch README.md
    git add README.md
    git commit -m "add README"
    git push -u origin master

En este momento ya habríamos clonado el repositorio en nuestro ordenador. Por el momento solamente contiene dos ficheros: .gitignore y README.md. El primero sirve para declarar qué ficheros del repositorio queremos ignorar y el segundo se utilizaría para describir aquellos aspectos que consideremos importantes. Ahora sería el momento de asociar el repositorio a un proyecto de R y empezar a trabajar.

Manos a la obra

Antes de usar Git con un proyecto importante, nuestro consejos es que crees uno o varios repositorios, juegues con ellos hasta entender cómo funciona esta herramienta y luego los borres. Para empezar te proponemos unos cuantos ejercicios.

Git sin servidor

  1. Crear un proyecto con soporte git en RStudio

  2. Crea un fichero informe.Rmd, guárdalo, añádelo y compromételo.

  3. Haz cambios en el fichero y compromete la nueve versión.

  4. Observa las diferencias entre las versiones.

  5. Visualiza la primera versión completa.

Git con servidor

Crear y clonar un repositorio en GitLab

  1. Accede al servidor y crea el repositorio.

  2. Inicia RStudio y abre la terminal, junto a la consola de R.

  3. Sigue el procedimiento proporcionado por el servidor para clonar e iniciar el repositorio.

  4. En este directorio (repositorio) puedes crear todos los proyectos de RStudio que desees.

  5. Usa los botones de la pestaña de Git en RStudio para subir los commits o descargar la última versión del repositorio.

Crear y modificar un proyecto RStudio en nuestro repositorio

  1. Crea un proyecto de RStudio dentro del repositorio.

  2. Crea, dentro del proyecto, un fichero informe2.Rmd, realiza un par de modificaciones y haz el commint.

  3. Súbelo al servidor.

  4. Comprueba desde el servidor, interfaz de GitLab, que todos los cambios han sido realizados.

Ejercicio adicionales

  1. Añade a tu repositorio a algún colega que tenga cuenta en GitLab.

    • Dile que añada algún fichero y suba los cambios.

    • Descarga los cambios de tu colega del servidor.

    • Comprueba que lo tienes en tu repositorio.

  2. Pide a algún colega que te añada a su repositorio GitLab

    • Clona su repositorio.

    • Modifica o añade algún fichero y sube al servidor los cambios.

    • Pídele que verifique tus cambios.

Resumen

La finalidad de este módulo no puede ser la de dotaros de todos los conocimientos necesarios para explorar Git, más bien proporcionaros un bosquejo que os permita entender los aspectos fundamentales del uso y ventajas de un sistema de control de versiones. Probablemente te encuentres en un mar de dudas y vas a necesitar tropezar varias veces en los mismos errores. De todos modos, confiamos en que sepáis apreciar los beneficios que conlleva el uso de este tipo de programas e incorporéis Git a vuestra caja de herramientas virtuales. Además, hay mucho material en la red.

Referencias

  • El Zen de Git (introducción a git para los que no saben git) (Visitar)

  • Git – la guía sencilla (Visitar)

  • Guías de GitHub (Visitar)

  • Documentación de GitLab (Visitar)

  • Swicegood, T 2010. Pragmatic Guide to Git. The Pragmatic Programmers

  • Silverman, RE 2013. Git Pocket Guide: A Working Introduction. O’Reilly Media.

  • … busca en internet, seguro que encuentras la solución.