concurrent, pipelined, platform-agnostic Git utilities for managing a large number of Git repositories
Project description
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.
GitMC uses command-line Git because PyGit also requires command-line Git installed, and we don't need the advanced functionality.
An important feature in
python CountGithubForks.py username
is showing which forks of your repos have had changes "ahead of" the parent repo.
Count how many total GitHub stars a GitHub account has:
python CountGithubStars.py username
That will take a couple seconds even for large numbers of repos.
Also see Git utilities for managing large (100+) numbers of users / teams, particularly for education and institutions.
Install
Install Git in a way accessible from the command line line
- Mac:
brew install git
- Linux:
apt install git
- Windows: command line Git.
python -m pip install -e .
For better speed, optionally we suggest Git ≥ 2.18 and Git wire protocol v2:
git config --global protocol.version 2
This benefits both HTTPS and SSH connections.
Usage
gitbranch
Tells of any non-master branches under directory ~/codegitemail
list all contributor email addresses. Optionally, amend email addresses for prior Git commits
Sync large number of git repos
These assume numerous subdirectories under ~/code
or c:\code
.
They work very quickly for large numbers (100+) repos.
gitmodified
check if any local repos have pending changesgitcheck
check if any remote repos are ahead of localgitpull
Git pulls all reposgitfetch
Git 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
This is for a website made using Jekyll:
ActOnChanged -j
Github
Python GitHub API
Most users will need a GitHub API token, as the unauthenticated API access is severly limited.
- Generate GitHub API token with ONLY the
user:email
permission. - Copy that text string to a secure location on your computer.
GitHub user stats
ListAllGithubRepos username OauthKey
Gives stats on GitHub repos for a particular user.
It requires extra prereqs via:
pip install -e .[github]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.