-
-
Save douglas/1287372 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# store the current dir | |
CUR_DIR=$(pwd) | |
# Let the person running the script know what's going on. | |
echo "\n\033[1mPulling in latest changes for all repositories...\033[0m\n" | |
# Find all git repositories and update it to the master latest revision | |
for i in $(find . -name ".git" | cut -c 3-); do | |
echo ""; | |
echo "\033[33m"+$i+"\033[0m"; | |
# We have to go to the .git parent directory to call the pull command | |
cd "$i"; | |
cd ..; | |
# finally pull | |
git pull origin master; | |
# lets get back to the CUR_DIR | |
cd $CUR_DIR | |
done | |
echo "\n\033[32mComplete!\033[0m\n" |
find . -maxdepth 8 -name '.git' -prune -type d -printf '%h\n' | parallel --eta 'echo {} && git -C {} pull'
remove echo and --eta if not needed.
Works perfectly. Thanks!
Thanks!
find . -maxdepth 8 -name '.git' -prune -type d -printf '%h\n' | parallel --eta 'echo {} && git -C {} pull'
Very simple, yet effective and blazingly fast. Amazing! Thanks, @harisankar-krishna-2015
Heh! I had this need again after 9 years and was surprised by the amount of comments =)
Thanks for all suggestions - I will update the gist with improvements to run on macos
and Linux
👍
How will this work in visual studio code with a workspace setup? I would like to be able to do a pull-from in all the repositories in the workspace, followed by a syncronization, except if there is a merge conflict.
How will this work in visual studio code with a workspace setup? I would like to be able to do a pull-from in all the repositories in the workspace, followed by a syncronization, except if there is a merge conflict.
Did you find a solution to this or an alternative?
Here is a solution for MacOSX:
Im running that from my root repo folder ( no .git in that folder )
~/Documents/repos/
~/Documents/repos/repo1
~/Documents/repos/repo2
/usr/bin/find . -maxdepth 1 -type d -print | parallel --eta 'echo {} && git -C {} pull'
Hello folks!
New year and just had to use it again - thanks for letting me know about GNU parallel
=)
About the license, it is public domain - do whatever you want with it provided the gist is not used in a malicious context 👍
Hello folks!
New year and just had to use it again - thanks for letting me know about GNU
parallel
=)About the license, it is public domain - do whatever you want with it provided the gist is not used in a malicious context 👍
Thank you very much, Douglas!
Happy New Year! :)
Had to replace all echo
with printf
for ANSI color output to work on Fedora 41
My version: https://github.com/joeytwiddle/jsh/blob/master/code/shellscript/git/git-update-all-repos.sh
I run it in a weekly cron job.