4 ms·
Multi-gitter – CLI to update multiple Git repositories in bulk
- mega-vega 4y ago
- bilekas 4y agoThis is interesting, but appart from maybe some CI/CD pipeline configurations I can't think of a particularly useful reason for it.. Anyone have some suggestions ?
- markwillis82 4y agoI've got ~ 70 git repos to move from AWS code commit to Gitlab and need to tweak config files in each one for the new hosting environment, so this should definitely help
- smcleod 4y agoIm making small, similar changes across about 30 repos of "microservices", they're a pain the the ass to maintain as they all sit with different owners - I'm not about to make a change in each repo, git add, git commit, push etc.... 30 times over, this makes it easy. I actually found mu-repo today which is much better for this - see https://news.ycombinator.com/item?id=31906227 https://news.ycombinator.com/item?id=31906227
- lindellme 4y agoSome of the most useful runs I've used it for is for refactoring of internal libraries. Something as simple as wanting to rename a function is theoretically very simple, but if this function is used in hundreds of other repositories, it will be very tedious. A script that upgrades the dependency + does a replace with sed or similar could be run to make this process way easier.
- skywal_l 4y agoI have this simple script that I find immensely useful when dealing with multiple git repository present in the same folder: #!/usr/bin/env bash if [ $# -lt 1 ] then echo "$0: error: missing arguments" echo "usage: $0 <command> <args...>" exit 1 fi for folder in `find . -maxdepth 1 ! -path . -type d` do if [ -d "$folder"/.git ]; then pushd . > /dev/null cd "$folder" echo -e '\033[1;32m' echo `pwd` echo -e '\033[0m' "$@" popd > /dev/null fi done In a folder with multiple git repos, you will do something like this: $ gitall git status [...] $ gitall git remote update [...] $ gitall git rebase origin/master [...]
- smcleod 4y agoI actually found mu-repo today which I find much better for my use cases - see https://news.ycombinator.com/item?id=31906227 https://news.ycombinator.com/item?id=31906227
- _ikke_ 4y agogit itself has a command called for-each-repo[0], which you provide the name of a global config setting which contains a list of repository paths, and it will then run the specified command on each of those repositories. Example from the man page: git for-each-repo --config=maintenance.repo maintenance run [0]:https://gitirc.eu/git-for-each-repo.html https://gitirc.eu/git-for-each-repo.html