Data Week

Fossil
Login
  • Propósito: Introducir los sistemas de control de versiones, en especial, Fossil.
  • Ejercicio práctico: Clonar un repositorio en Fossil, registrarse en él, sincronizarse y agregar nuevo contenido, hecho en Markdown.
  • Prerequisitos:

Fossil es un sistema de colaboración distribuido para gestión de código fuente. Los SCM (Software Configuration Management) o DVCS (Distributed Version Control System) resuelven el problema respecto a cómo reproduzco el estado de un sistema de cómputo y su historia (orientado a archivos). Al resolver esta inquietud, se está resolviendo una pregunta incidental que es sobre cómo colaborar, de maneras no centralizadas.

Fossil es el SCM elegido para trabajar con Grafoscopio y el Data Week por su caracter sencillo y autocontenido, lo cual quiere decir que brinda mucha funcionalidad en un único programa, con flujos de trabajo y colaboración simples, y puede ejecutarse en una variedad grande de plataformas de hardware y software, con mínimos requerimientos de recursos de hardware (poca memoria RAM, menos de 3 Mb en disco duro) y software, además tanto los datos como los metadatos (salvo las contraseñas) son repartidos entre todos los usuarios que se sincronicen al repositorio, es decir, satisface nuestra definición de infraestructuras de bolsillo.

Existen algunas pocas herramientas para Git, como Gogs, que siguen el enfoque minimalista de Fossil, si bien no toda la información parece ser autocontenida e implican los flujos de trabajo complicados propios de Git.

Referencias Extra:

Instalación

Antes de proceder a la instalación es conveniente verificar si ya se tiene instalado fossil (por ejemplo verificar si el comando "fossil" existe tecleando $ which fossil).

Usando gestores de paquetes en Gnu/Linux

Averigua con el gestor de paquetes (apt, pacman) si tu distribución de Linux tiene Fossil disponible en una versión relativamente reciente (como las que usamos para nuestros talleres) e instálada desde dicho gestor.

IMPORTANTE: En nuestra experiencia, algunas distribuciones derivadas de Debian, suelen tener paquetes muy viejos de Fossil.

Usando gestores/instaladores de software

Más información acá

Métodos de instalación alternativos

Se puede instalar desde el gestor de paquetes en Linux, Mac, Windows, pero cuando está muy desactualizado, una alternativa es instalarlo desde el código fuente.

Windows

Gnu/Linux y Mac

Así se hace esto en Gnu/Linux y Mac, usando comandos en la terminal:

  1. Descargar el instalador desde la página web:

    cd /tmp
    wget http://fossil-scm.org/index.html/uv/fossil-linux-x64-2.3.tar.gz
    
  2. Descomprimimos el archivo:

    tar xvfz fossil-linux-x64-2.3.tar.gz
    
  3. Encontraremos un binario llamado fossil que copiamos a donde están todos los binarios:

    sudo cp fossil /usr/bin
    

Usando Fossil

Para usar Fossil, vamos a sincronizarnos contra un repositorio, agregar archivos a este y mirar cómo ha cambiado su línea de tiempo. Hay otras cuestiones que vamos a dejar en el radar, pero que no vamos a profundizar, como el hecho de publicar repositorios propios. Sin embargo, ese tipo de funcionalidad también está provista por sistemas como Chisel.

Navegar un repositorio:

Existen determinados lugares para visitar con los cuales uno se puede hacer una idea de un repositorio de Fossil, sus contenidos y actividad. A continuación los listamos esos lugares, mostrando algunos ejemplos de los mismos en distintos repositorios.

Descargar un repositorio:

ADVERTENCIA: asegurarse que los comandos se ejecutan en el directorio correcto porque se pueden crear un montón de directorios y cosas en un directorio que no se desea.

Cuando se descarga un repositorio lo que se hace es traer toda la historia del mismo de su lugar remoto a mi disco duro. Vamos a hacer esto con el repositorio del Data Week,desde la consola de comandos.

Modificar el repositorio

Vamos a crear una subcarpeta dentro de la carpeta Participantes, con nuestro nombre o un alias. Por convención (se puede cambiar), los nombres de las carpetas suelen empezar en mayúsculas. Y dentro de dicha carpeta vamos a crear un archivo llamado intro.md con cualquier texto de caracter introductorio. Suponemos que estamos ubicados en la raíz del repositorio, para los comandos que siguen en este ejercicio e iremos haciendo las adaptaciones del caso y que el repositorio ya está abierto.

Sincronización entre repositorios

Dicha sincronización es hecha a través de un servidor que sirve como coordinador. En nuestro caso, será el repositorio original del Data Week. Lo anterior quiere decir que debemos registrarnos en dicho repositorio y solicitar permisos para sincronizarnos con él.

Pantalla de registro de Fossil.
^Arriba | Pantalla de registro de Fossil.

Donde es el usuario que creamos en el paso anterior del "login" (sin los símbolos < >).

donde es el nombre del usuario con el que nos registramos en Fossil

Cómo resolver las bifurcaciones involutarias (forks).

La diferencia entre "branches" y "forks":

El estado del repositorio a hoy era este:

Repositorio antes del merge.
^Up | Repositorio antes del merge.

Vemos que se han integrado dos bifurcaciones, pero aún quedan tres por integrar. Cada estado del sistema está descrito por un código alfanumérico único, suma hash.

Las ramas que fueron integradas corresponden (en la imagen) a las siguientes sumas hash: [f0ea5717e4] (El commit de Grace) y el tronco (trunk) de ese momento, cuyo checksum corresponde a [1b5023d5a4], produciendo un estado del sistema nuevo, cuyo checksum es [dcd4e53045].

Vamos a integrar una nueva ramificación en el tronco principal. Para ello, ubicados en el repositorio, desde la terminal

fossil update trunk
fossil merge 0ef40cd985

Aparecerá algo como esto:

Autosync:  http://offray@mutabit.com/repos.fossil/dataweek/
Round-trips: 1   Artifacts sent: 0  received: 0
Pull done, sent: 383  received: 2429  ip: 45.55.37.99
ADDED Participantes/Ivan/intro.md
 "fossil undo" is available to undo changes to the working checkout.
WARNING: multiple open leaf check-ins on trunk:                                                   
  (1) 2018-02-24 18:59:24 [dcd4e53045] (current)
  (2) 2018-02-24 01:33:03 [5da6cdb6dc]
  (3) 2018-02-24 01:32:45 [0a25a7636d]
  (4) 2018-02-24 01:31:51 [0ef40cd985]

Luego hacemos un commit al repositorio:

fossil commit -m "Integrando cambios de Iván."

Y luego mezclamos ese commit con el tronco principal, que de ahora en adelante llamaremos simplemente "trunk". Veremos algo como esto:

Repositorio después del merge.
^Up | Repositorio después del merge.

NOTA: Si olvidas hacer el fossil update trunk antes de hacer el merge, puedes usar fossil undo para revertir el cambio.

Varios:

[Indice] [< Markdown] [Grafoscopio >]