У меня есть набор репозиториев, отсортированных по каталогам на основе их VCS (Git, Mercurial, SVN). С Subversion я смог запустить svn update *
в родительском каталоге, и он будет проходить через каждый каталог и обновлять каждый репозиторий, как ожидалось. Это не относится к Git или Mercurial.
Я хотел бы придумать сценарий bash, который я могу запустить, чтобы сделать именно это, цикл по каталогам и git pull
или же hg pull
в каждом. У меня просто нет большого опыта написания сценариев bash.
Если вам нужно, чтобы он был рекурсивным:
Это спустится во все каталоги под текущим и выполнит git pull для тех подкаталогов, которые имеют каталог .git (вы можете ограничить его
-maxdepth
).источник
-execdir
здесь намного лучшеfind . -type d -name .git -execdir sh -c "pwd && git pull" \;
Если у вас установлен GNU Parallel http: // www.gnu.org/software/parallel/, вы можете сделать это:
Это будет работать параллельно, поэтому, если некоторые из сетевых соединений git-серверов работают медленно, это может ускорить процесс.
Посмотрите вступительное видео для GNU Parallel, чтобы узнать больше: http://www.youtube.com/watch?v=OpaiGYxkSuQ
источник
ls */
чтобы убедиться, что вы вносите последовательный вклад вcd
,Это должно работать
источник
Сделать это рекурсивный без использования
find
ноforloop
источник