Можно ли связно управлять несколькими репозиториями? - PullRequest
9 голосов
/ 04 февраля 2012

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

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

Ответы [ 5 ]

7 голосов
/ 04 февраля 2012

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

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

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

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

5 голосов
/ 05 февраля 2012

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

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

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

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

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

  • помимо запускаОбычные операции git с несколькими репозиториями одновременно также предоставляют рабочие процессы для:

    • клонирования нескольких репозиториев
    • открытых URL-адресов из репозиториев (поэтому можно создавать запросы извлечения для нескольких репо одновременно).
    • diff изменяется на нескольких репо одновременно с winmerge или meld
    • выполняет не-git команды
0 голосов
/ 27 сентября 2017

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

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

0 голосов
/ 25 августа 2017

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

git submodule foreach --recursive <command>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...