Можно ли согласованно управлять несколькими репозиториями?
У меня есть коллекция репозиториев 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
на волна вычислительная вилка РЕПО. Мы используем его в производстве.