Можно ли согласованно управлять несколькими репозиториями?

У меня есть коллекция репозиториев git, которые независимо версионны, но связаны друг с другом. Например, при добавлении функции мне может потребоваться добавить функциональность в общую библиотеку, а затем расширить приложение или службу, чтобы воспользоваться этой функциональностью.

В настоящее время мне нужно создать ветвь в каждом из репозиториев, к которым я прикасаюсь во время работы над этой функцией. Что я хотел бы сделать, однако, это упростить процесс путем ветвления и объединение этих нескольких репозиториев одновременно (чтобы уменьшить вероятность забывания ветвления или фиксации/слияния в одном репозитории, но не в другом).

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

5 ответов


нет встроенного способа иметь дело с несколькими репозиториями сразу, и если вы думаете о распределенной природе git, на самом деле нет ничего, кроме социальной конвенции, что can определить, что. (Подумайте, что, если кто - то тянет от вас в один репозиторий, а другой удаленный на второй-можете ли вы иметь эту согласованность?)

вы можете найти такой инструмент, как г, который работает с несколькими репозиториями одновременно, полезный.

Если у вас действительно есть вещи, которые связаны так плотно, я бы посоветовал вам поместить их в один репозиторий. Таким образом, вы не можете забыть ни один из шагов, потому что они происходят в одной атомной операции.

Если ваш код на самом деле не так тесно связан, то откажитесь от понятия "должен ветвиться в одно и то же время", и вы будете счастливее.


вы можете использовать инструмент РЕПО: https://gerrit.googlesource.com/git-repo/

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

кроме того, взгляните на:http://fabioz.github.io/mu-repo/ -- Это такой инструмент, как mr и repo, поскольку я не мог заставить их работать так, как мне нужно:)

некоторые замечания:

  • Это делается на Python (так, хорошо работает в любой ОС, где работает Python: Linux, Win, Mac...)

  • помимо выполнения общих операций git против многих репозиториев одновременно также предоставляет рабочие процессы для:

    • клонировать несколько хранилища
    • открытые URL-адреса из репозиториев (таким образом, можно создавать запросы pull для нескольких репозиториев одновременно).
    • diff изменения на нескольких репозиториях сразу с winmerge или meld
    • выполнить не команды git

просто как идея. Я не пробовал это сам, но я наткнулся на эту функцию некоторое время назад. Попробуйте добавить все нужные репозитории в качестве подмодуля в новый" корневой " репозиторий и используйте следующую команду

git submodule foreach --recursive <command>

вы можете обратиться за помощью для этого и как обращаться с подмодулями. Вы можете использовать любую команду. команды git и non-git.


на Android repo tool управляет созданием ветвей функций в нескольких репозиториях. Однако repo upload команда может публиковать только обзор кода Gerrit.

если вы используете обычный менеджер репозитория Git, такой как GitHub или GitLab, repo upload не будет работать; вам нужно несуществующее . Я реализовал repo push на волна вычислительная вилка РЕПО. Мы используем его в производстве.