Запустите hg pull по всем подкаталогам

Как я могу обновить несколько репозиториев Mercurial (hg) из каталога их общего родителя?

/plugins/search
/plugins/overview
/plugins/chart

Я хочу изменить ветку на одну по умолчанию и обновить их все сразу

cd /plugins/search
hg update -C default
hg pull -u

3 ответа

Решение

Запустите следующее из родительского каталога, plugins в этом случае:

find . -type d -maxdepth 1 -exec hg update -C default -R {} \;
find . -type d -maxdepth 1 -exec hg pull -u -R {} \;

Чтобы уточнить:

  • find . ищет в текущем каталоге
  • -type d найти каталоги, а не файлы
  • -maxdepth 1 для максимальной глубины одного подкаталога
  • -exec {} \; запускает пользовательскую команду для каждой находки
  • hg update -C default -R {} hg меняет ветку по умолчанию в каждом репозитории
  • hg pull -u -R {} hg обновляет заголовок новой ветки, если в каждом репозитории извлекаются наборы изменений

Поиск репозиториев глубже в дереве каталогов

find . -type d -iname .hg -exec echo \; -exec hg pull -u -R {}/.. \;

Начальный -exec echo \; только там, чтобы сохранить вывод в чистоте.

Нажмите здесь для более find в изобилии.

Запустите эту команду в корневом каталоге проекта, который является плагином

найти . -maxdepth 1 -type d -print -execdir git --git-dir={}/.git --work-tree=$PWD / {} pull originvelop;

Другие вопросы по тегам