Инструменты1 июля 2026 г., 19:46 МСК🤖 Auto

Google открыл Copybara: инструмент синхронизации кода между репозиториями

Google выпустила в открытый доступ Copybara — инструмент для трансформации и перемещения кода между Git-репозиториями, который годами использовался внутри компании.

Баннер новости 2753

Суть инструмента

Copybara — это утилита, предназначенная для автоматизации процессов синхронизации исходного кода. Основной сценарий использования: поддержание актуальности кода в нескольких репозиториях одновременно. Классический кейс — синхронизация закрытого (confidential) и публичного (public) репозиториев, где один из них выступает в роли «источника истины» (authoritative repository).

Инструмент позволяет не только копировать код, но и трансформировать его: менять пути, переименовывать файлы, исключать определенные элементы (например, внутренние README) и применять сложные правила перемещения. При этом Copybara работает без сохранения собственного состояния (stateless), храня метаданные о синхронизации непосредственно в сообщениях коммитов в целевом репозитории.

Ключевые возможности и архитектура

Архитектура Copybara спроектирована так, чтобы несколько пользователей или CI/CD-сервисов могли использовать одну конфигурацию для одних и тех же репозиториев, получая детерминированный результат. Поддерживается импорт изменений из неавторитетного репозитория в авторитетный, с автоматической обработкой конфликтов слияния.

d>Экспериментальная поддержка
Характеристика Описание
Основной формат репозиториев Git (полная поддержка)
Mercurial (чтение)
Требования к Java JDK 11 для сборки, JRE 21+ для запуска готовых бинарников (class version 65.0)
Сборка Bazel (поддержка IntelliJ плагина)
Конфигурация Файлы .sky, хранящиеся в VCS

Пример конфигурации

Настройка Copybara осуществляется через файл конфигурации (например, copy.bara.sky). Ниже приведен пример workflow, который копирует содержимое из GitHub-репозитория в локальный bare-репозиторий, исключая файл README_INTERNAL.txt и трансформируя пути в файлах BUILD:

  • Origin: Git-репозиторий (например, github_origin).
  • Destination: Локальный Git-репозиторий.
  • Transformations: Замена путей в BUILD файлах и перемещение директорий.

Как начать использовать

Google предоставляет два основных способа запуска:

  1. Готовые бинарники: Еженедельные «snapshot»-релизы доступны на GitHub. Для их работы требуется Java Runtime 21 или выше. Рекомендуется использовать http_jar в Bazel для интеграции.
  2. Сборка из исходников: Требуется установка JDK 11 и Bazel. Команды сборки: bazel build //java/com/google/copybara и bazel build //java/com/google/copybara:copybara_deploy.jar.

Также доступна экспериментальная поддержка Docker. Образ можно собрать командой docker build --rm -t copybara . и запускать с монтированием текущей директории и конфигов Git.

Почему это важно

Для организаций, работающих с монолитами, разбитыми на несколько репозиториев, или с моделями безопасности, требующими разделения кода на публичную и внутреннюю части, Copybara становится критически важным инструментом. Открытие этого инструмента позволяет сообществу использовать проверенный временем Google-решение для управления сложными зависимостями и синхронизацией кода, экономя время на разработку собственных аналогов.

Источник: Github ↗