Manage your GitHub organisations in style via versionable, ini-style configuration files through a sync process. This tool automates tedious tasks such as creating teams, granting permissions, creating repositories and modifying settings.
Pull request Compare This branch is 92 commits ahead of garbas:master.
Latest commit f386be5 Mar 3, 2016 @davidjb davidjb Merge pull request #7 from gregswift/update-requirements
Update requirement on requests to be a bit more modern version.
Failed to load latest commit information.
githubcollective Old version of requests returned None if the key didnt exist. 2.x+ do… Mar 3, 2016
.gitignore Extend gitignore to cover things the bootstrapping and testing create Mar 3, 2016
README.rst Adding extra feature on fork-and-pull model Jul 23, 2012 Updating documentation and adding tests for variable substitution Jul 16, 2012
buildout.cfg Updating buildout to pull in dependencies, specified Sphinx as an extra Jul 22, 2012
requirements.txt Update requests version Mar 3, 2016
setup.cfg Update requests version Mar 3, 2016



GitHub organizations are great way for organizations to manage their Git repositories. This tool will let you automate the tedious tasks of creating teams, granting permissions, and creating repositories or modifying their settings.

The approach that the github-collective tool takes is that you edit a central configuration (currently an ini-like file) from where options are read and synchronized to GitHub respectively.

Initially, the purpose of this script was to manage Plone's collective organization on GitHub: It is currently in use in several other locations.


Read the full documentation at


  • Create one central configuration that you can sync to GitHub to configure your organisation's settings, repositories, teams, and more.
    • Combine this with GitHub's fork-and-pull request model to easily allow non-administrative users to create and manage repositories with minimal overhead.
  • Repositories: create and modify repositories within an organization
    • Configure all repository properties as per the GitHub Repos API, including privacy (public/private), description, and other metadata.
    • After the initial repository creation happens, updated values in your configuration will replace those on GitHub.
  • Service hooks: add and modify service hooks for repositories.
    • GitHub repositories have support for sending information upon certain events taking place (for instance, pushes being made to a repository or a fork being taken).
    • After the initial repo creation process takes place, updated values in your hook configuration will replace those on GitHub.
    • Hooks not present in your configuration (such as those manually added on GitHub or those removed from local configuration) will not be deleted.
  • Teams: automatically create teams and modify members
    • Control permissions for teams (for example: push, pull or admin)
  • Automatically syncs all of the above with GitHub when the tool is run.
  • Buildout-style variable substitution in the form ${section:option}.