Este artículo explora una alternativa minimalista a servicios como GitHub para sincronizar repositorios Git personales, como archivos de configuración, macros y esquemas de color. El autor, frustrado por la dependencia de servicios en la nube y la necesidad de características innecesarias, descubre una solución sorprendentemente simple: utilizar la funcionalidad nativa de Git para sincronizar repositorios directamente entre dispositivos.
¿Cómo funciona? Git, en su esencia, es una colección de archivos, y el núcleo de un repositorio Git es la carpeta .git, que contiene todo el historial de versiones y el estado del repositorio. Copiar esta carpeta entre ubicaciones crea una copia funcional del repositorio. Aunque cp o rsync pueden copiar la carpeta, no son adecuados para la sincronización regular porque no gestionan las diferencias entre las copias. Los comandos git push y git pull son la solución correcta, ya que sincronizan el estado del repositorio, comparan el historial y combinan los cambios de forma segura. Lo crucial es que un 'remote' en Git puede ser una carpeta local, eliminando la necesidad de un servicio en la nube.
El artículo explica la diferencia entre repositorios 'bare' y 'non-bare'. Los repositorios 'non-bare' tienen un directorio de trabajo donde se editan los archivos. Los repositorios 'bare', por otro lado, son solo la carpeta .git sin el directorio de trabajo. Los repositorios 'bare' son ideales para recibir push porque no tienen un directorio de trabajo que pueda desincronizarse. El autor utiliza repositorios 'bare' en un disco externo conectado a su computadora de escritorio, y los demás dispositivos apuntan a este repositorio 'bare' como su 'remote'.
El autor crea un repositorio 'bare' en un disco externo y luego configura los dispositivos para que apunten a este repositorio como su 'remote' utilizando comandos git remote add origin. Esto permite sincronizar los cambios utilizando git push y git pull como de costumbre. Para configurar un nuevo dispositivo, simplemente se clona el repositorio 'bare'. Se puede usar Tailscale (o cualquier otro método SSH) para acceder al repositorio 'bare' desde otros dispositivos.
Esta solución carece de características avanzadas como una interfaz web, seguimiento de problemas o integración continua. Sin embargo, ofrece simplicidad, control total sobre los datos y elimina la dependencia de servicios de terceros. El autor reflexiona sobre cómo la publicación indiscriminada de código en GitHub a menudo resulta en 'desorden digital' y cómo la creación de contenido más específico y documentado es más valiosa para compartir conocimiento. En resumen, se trata de una solución minimalista para una tarea específica: sincronizar archivos de configuración entre dispositivos, utilizando las herramientas básicas de Git.
