concurrent, pipelined, platform-agnostic Git utilities for managing a large number of Git repositories
GitMC -- concurrent asynchronous Git Utilities for operations on massive numbers of Git repos
Platform-independent (Linux/Mac/Windows) Git utilities, useful for managing large (100+) numbers of Git repos.
Speed is an emphasis throughout, with concurrency via Python
asyncio and pipelining.
In general, GitMC works with all GitHub repos, including organization private repos--assuming you have created a GitHub Oauth key with appropriate permissions ("repo" needed for private org/user repos").
GitMC uses command-line Git because PyGit also requires command-line Git installed, and we don't need the advanced functionality.
Also see PyGitHub utilities for managing large (100+) numbers of users / teams.
Install Git in a way accessible from the command line line
brew install git
apt install git
- Windows: command line Git.
python -m pip install -e .
gitbranchTells of any non-master branches under directory ~/code
gitemaillist all contributor email addresses. To fix unwanted emails use Git-filter-repo
find_missing_file: find directories missing exact fullpath to file
find_matching_file: find directories matching exact fullpath to file
Sync large number of git repos
These assume numerous subdirectories under
They work very quickly for large numbers (100+) of repos.
gitstatcheck if any local repos have pending changes
gitcheckcheck if any remote repos are ahead of local
gitpullGit pulls all repos
gitfetchGit fetches all repos
You can place an empty file
.nogit in a subdirectory to skip it.
[optional] speedup with https pull
For public repos, to make the Git remote checking go at least twice as fast, and significantly reduce the computational burden when SSH is used for
git push (as is recommended), consider the "pushInsteadOf" global Git config.
To do this, when cloning a public repo (including ones you're a collaborator on), use
git clone https://.
This global SSH push config one-time does SSH push for HTTPS-cloned repos:
git config --global url."ssh://github.com/".pushInsteadOf https://github.com/
The pattern matching can be made for all sites by omitting
github.com from the command above, or you can refine it for each site, or even for specific usernames by editing the command above.
For private repos, simply clone with SSH as usual
Preview all changed Jekyll files
ActOnChanged . -p
It shows web page previews of all pages changed locally--start the Jekyll or Hugo debug server first e.g.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size gitutils-1.7.0.tar.gz (11.8 kB)||File type Source||Python version None||Upload date||Hashes View|