Simple management of organizations of git repositories, between a local host and one or more remotes.
Configured by a git-org.yaml
file, along the lines of:
org: dan-fritchman
remotes:
gitlab: gitlab.com
github: github.com
skip:
- some_secret_stuff
- other-embarassing-stuff
Remotes are created via SSH, with names listed in config.remotes
.
For example after running on GitOrg
itself, remotes are configured as:
[GitOrg] $ git remote -v
github [email protected]:dan-fritchman/GitOrg.git (fetch)
github [email protected]:dan-fritchman/GitOrg.git (push)
gitlab [email protected]:dan-fritchman/GitOrg.git (fetch)
gitlab [email protected]:dan-fritchman/GitOrg.git (push)
Rules for which repo-directories are added are codified in setup_git_org.filters
:
filters = (
lambda p: p.is_dir(),
lambda p: p.name not in config['skip'],
lambda p: 'secret' not in p.name,
lambda p: not (p / '.no-git-org').exists(),
)
In short:
- Directories with
secret
in their name are skipped - Directories with a
.no-git-org
file, regardless of its content, are skipped - Directories (names) listed in
config.skip
are skipped
- Auto-created GitHub repos. (GitLab is nice enough to do this on push!)
- Hierarchically nested orgs.