Copybara: la herramienta de Google para sincronizar código entre repositorios

Fuentes: Copybara: a tool for transforming and moving code between repositories

Copybara es una herramienta desarrollada y utilizada internamente en Google cuyo propósito es transformar y mover código fuente entre distintos repositorios. Responde a una necesidad habitual en proyectos de software: mantener sincronizados repositorios con políticas de visibilidad diferentes, como uno confidencial y otro público, sin duplicar trabajo manual ni perder trazabilidad.

Funciona bajo el principio de una única fuente de verdad: el usuario designa un repositorio autoritativo y Copybara se encarga de propagar los cambios hacia los demás. No obstante, permite aceptar contribuciones desde cualquier repositorio, y cualquier repositorio puede servir como base para una versión. Entre sus casos de uso principales se encuentran importar secciones de código de un repositorio privado a uno público, hacer el camino inverso, y reintegrar cambios desde un repositorio no autoritativo al autoritativo, gestionando los conflictos de fusión como cualquier cambio desactualizado.

Una de sus características más relevantes es que es stateless: guarda el estado en el repositorio de destino, en forma de etiqueta dentro del mensaje de commit. Esto permite que varios usuarios o servicios operen sobre la misma configuración y obtengan resultados idénticos. Actualmente soporta de forma estable repositorios Git, mientras que la lectura desde Mercurial es experimental; su arquitectura extensible facilita añadir orígenes y destinos a medida.

Copybara se configura mediante ficheros en Starlark (similar a Python) en los que se define el origen, el destino, los ficheros a mover y las transformaciones a aplicar, como sustituciones de texto o reubicaciones de rutas. Se distribuye como binarios semanales sin garantías de compatibilidad o verificación manual, pensados para pruebas rápidas, y también puede compilarse desde el código fuente con JDK 11 y Bazel. Existe además soporte experimental mediante Docker, que facilita su uso sin instalación local.