The mr
утилиты (а.к.а., myrepos
) обеспечивает выдающийся решение этой самой проблемы. Установите его с помощью своего любимого менеджера пакетов или просто возьмите сценарий mr
directly from github и поместите его в $HOME/bin
или в другое место на PATH
. Затем cd
в папку родительского plugins
совместно эти РЕПО и создать базовый .mrconfig
файл с содержимым, похожим на следующее (регулировочной в URL, по мере необходимости):
# File: .mrconfig
[cms]
checkout = git clone 'https://<username>@github.com/<username>/cms' 'cms'
[admin]
checkout = git clone 'https://<username>@github.com/<username>/admin' 'admin'
[chart]
checkout = git clone 'https://<username>@github.com/<username>/chart' 'chart'
После этого, вы можете запустить mr up
с верхнего уровня plugins
папку для загрузки обновлений из каждого репозитория. (Обратите внимание, что это также сделает начальный клон, если целевая рабочая копия еще не существует.) Другие команды, которые вы можете выполнить, включают mr st
, mr push
, mr log
, mr diff
и т. Д. mr help
, чтобы посмотреть, что возможно. Существует команда mr run
, которая действует как сквозной проход, позволяя вам получать доступ к командам VCS, которые напрямую не поддерживаются самим mr
(например, mr run git tag STAGING_081220015
). И вы даже можете создавать свои собственные команды, которые выполняют произвольные биты сценария оболочки, нацеленные на все репозитории!
mr
- чрезвычайно полезный инструмент для работы с несколькими репозиториями. Поскольку папка plugins
находится в вашем домашнем каталоге, вас также может заинтересовать vcsh
. Вместе с mr
он обеспечивает мощный механизм управления всеми ваших конфигурационных файлов. См. Это blog post Томас Феррис Николаисен для обзора.
Что случилось с 'найти -name .git -execdir мерзавец тянуть \; '? – jthill
как насчет 'git do pull' –
Тот же вопрос [ответил] (https://stackoverflow.com/a/48790388/2192488) для' hg mercurial'. –