跳转到主要内容

用于以集体方式管理GitHub组织的脚本

项目描述

简介

GitHub组织 是组织管理Git存储库的绝佳方式。此工具可让您自动化创建团队、授予权限和创建存储库或修改其设置的繁琐任务。

github-collective 工具采用的方法是您编辑一个中央配置(目前是一个类似ini的文件),从该文件读取选项,并分别同步到GitHub。

最初,此脚本的目的是管理Plone的集体GitHub组织:http://collective.github.com。它目前在其他几个位置使用。

文档

请访问http://github-collective.rtfd.org阅读完整文档。

特性

  • 创建一个中心配置,您可以将它同步到GitHub以配置组织的设置、仓库、团队等。

    • 结合GitHub的分支和拉取请求模型,轻松允许非管理员用户以最小的开销创建和管理仓库。

  • 仓库:在组织内部创建和修改仓库

    • 根据GitHub Repos API配置所有仓库属性,包括隐私(公开/私有)、描述和其他元数据。

    • 初始仓库创建后,配置中的更新值将替换GitHub上的那些值。

  • 服务钩子:添加和修改仓库的服务钩子。

    • GitHub仓库支持在发生某些事件时发送信息(例如,向仓库推送或分支被拉取)。

    • 初始仓库创建过程完成后,钩子配置中的更新值将替换GitHub上的那些值。

    • 配置中不存在(例如,在GitHub上手动添加或在本地配置中删除)的钩子将不会被删除。

  • 团队:自动创建团队和修改成员

    • 控制团队的权限(例如:推送、拉取或管理员)

  • 当运行工具时,将自动同步所有这些设置到GitHub。

  • 使用形式为${section:option}的Buildout样式变量替换。

用法

安装github-collective后,它应该在您的bin目录中创建一个同名的可执行文件。

% bin/github-collective --help
usage: github-collective [-h] -c CONFIG [-M MAILER] [-C CACHE] -o GITHUB_ORG
                         -u GITHUB_USERNAME -P GITHUB_PASSWORD [-v] [-p]

This tool will let you automate tedious tasks of creating teams granting
permission and creating repositories.

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        path to configuration file (could also be remote
                        location). eg.
                        http://collective.github.com/permissions.cfg (default:
                        None)
  -M MAILER, --mailer MAILER
                        TODO (default: None)
  -C CACHE, --cache CACHE
                        path to file where to cache results from github.
                        (default: None)
  -o GITHUB_ORG, --github-org GITHUB_ORG
                        github organisation. (default: None)
  -u GITHUB_USERNAME, --github-username GITHUB_USERNAME
                        github account username. (default: None)
  -P GITHUB_PASSWORD, --github-password GITHUB_PASSWORD
                        github account password. (default: None)
  -v, --verbose
  -p, --pretend

本地存储的配置

% bin/github-collective \
    -c example.cfg \ # path to configuration file
    -o vim-addons \  # organization that we are
    -u garbas \      # account that has management right for organization
    -P PASSWORD      # account password

远程存储的配置(GitHub)

% bin/github-collective \
    -c https://raw.github.com/collective/github-collective/master/example.cfg \
                     # url to configuration file
    -o collective \  # organization that we are
    -u garbas \      # account that has management right for organization
    -P PASSWORD      # account password

缓存配置

% bin/github-collective \
    -c https://raw.github.com/collective/github-collective/master/example.cfg \
                     # url to configuration file
    -C .cache        # file where store and read cached results from github
    -o collective \  # organization that we are
    -u garbas \      # account that has management right for organization
    -P PASSWORD      # account password

测试

nose用于测试,并且在此项目的setup.cfg文件中存在nose的配置。此配置自动检查项目中的测试文件,包括此read-me本身。您可以使用提供的Buildout配置初始化和运行测试

git clone git://github.com/collective/github-collective.git
cd github-collective
virtualenv .
python boostrap.py
bin/buildout
bin/nosetests

tox用于确保此软件包在每种Python版本下都能正确安装。目前我们测试了Python 2.6和Python 2.7。支持在tox下运行测试将在不久的将来提供。要测试安装

git clone git://github.com/collective/github-collective.git
cd github-collective
virtualenv .
pip install tox
tox

问题和贡献

通过此项目的GitHub问题跟踪器https://github.com/collective/github-collective/issues报告问题。

通过在GitHub上提交拉取请求或通过添加自己到Collective并直接贡献来贡献。

待办事项

  • 通过API配置组织设置

  • 添加错误发生时继续的功能

  • 向所有者发送关于删除仓库的电子邮件

  • 更好的日志记录机制(例如,logbook)

  • 支持配置扩展性(例如,extends =语法)以使用多个配置文件。

致谢

作者

Rok Garbas(garbas)

贡献者

David Beitey(davidjb)

变更日志

0.4 (2012-11-28)

  • 在意外API更改后恢复将仓库分支到组织的能力。[davidjb]

  • 确保将分支数据负载(组织名称)以JSON格式发送。[davidjb]

  • 允许创建后正确命名分支。GitHub的API使用原始名称进行分支,因此我们需要在分支后重命名。[davidjb]

  • 向同步模块添加重命名辅助功能。(注意配置尚不支持重命名)[davidjb]

  • Read the Docs-化的文档。[davidjb]

0.3.2 (2012-07-17)

  • 修复钩子变量的模板问题。之前,原始配置正在被修改,防止了进一步的模板化。[davidjb]

  • 修复由于存储现有整数ID而导致钩子从缓存中更新的问题。[davidjb]

  • 修复在仓库更改时缓存未更新的问题。[davidjb]

0.3.1 (2012-07-17)

  • 仅向GitHub发送API选项以减少开销。[davidjb]

  • 在详细模式下运行时显示配置更改的输出。这有助于追踪GitHub值存储的异常,以减少开销。[davidjb]

0.3 (2012-07-17)

  • 实现Buildout样式的变量替换以进行配置和doctesting。[davidjb]

  • 在详细模式下运行时输出已解析的配置。[davidjb]

  • 现在GitHub API v3支持删除仓库,因此实现从配置中删除仓库。**警告**:如果GitHub上存在但不在您的配置中的仓库,现在将被删除。如果不清楚,请首先以模拟模式运行命令。[davidjb]

  • 优化删除过程,以尝试删除时不清除缓存。[davidjb]

  • 为测试添加extras_require选项以使用nose。[davidjb]

  • 更新为依赖requests==0.13.1。[davidjb]

0.2 (2012-06-22)

  • 允许在配置中指定服务钩子。有关示例,请参阅示例配置。任何GitHub支持的钩子都可以与仓库关联。[davidjb]

  • 允许在创建和编辑配置时设置仓库属性。有关可用选项,请参阅http://developer.github.com/v3/repos/#create。这提供了创建私有仓库(如果可用配额)等其他选项。[davidjb]

  • 修复创建团队时的响应解析问题。[davidjb]

  • 改进了最终用户文档。[davidjb]

0.1.4 - 2012-02-19

  • 添加对requests==0.10.2的支持,并删除pdb [f561d79, garbas]

0.1.3 - 2011-07-09

  • 修复缓存文件错误,缓存现在工作正常[garbas]

0.1.2 - 2011-07-03

  • 将团队重命名为old_team以保持与sync.run方法中的约定一致。使用集合上的add而不是update [e48de49, garbas]

  • pretend应对所有请求类型都有效,除了get请求类型 [e098f9d, garbas]

  • 在缓存文件中更优雅地输出JSON,取消缩进搜索在团队中定义的仓库的部分 [b8cb123, garbas]

  • 如果没有缓存文件可用,我们应该写入缓存文件 [fd7f9ee, garbas]

0.1.1 - 2011-07-02

  • 并且我们进行了第一次错误修复发布,在重构和合并enable-cache分支之后。[a09d174, garbas]

0.1 - 2011-07-02

  • 初始发布[garbas]

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

github-collective-0.4.zip (43.0 kB 查看哈希值)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面