大多数时候,我们是以个人用户的身份来使用 GitHub 提供的服务。可是你知道吗?其实 GitHub 的用户类型除了个人用户,还可以是组织(organization)。
推荐阅读:
GitHub 是怎么火起来的 http://www.linuxidc.com/Linux/2013-06/85489.htm
GitHub 一代:开源许可证已成过去时 http://www.linuxidc.com/Linux/2013-05/84556.htm
GitHub 免费为妇女领导的开源项目提供私有库支持 http://www.linuxidc.com/Linux/2013-04/83517.htm
1. 什么是组织?它和个人用户有什么不同?
这是我自己的 GitHub 用户页面(http://github.com/myst729):
这是我同事 @大城小胖 的用户页面(http://github.com/finscn):
上面两个都是个人用户,我们再来看两个组织的页面。这是 jQuery (http://github.com/jquery):
这是 WordPress (http://github.com/wordpress):
发现不同之处了吗?对于个人用户,我们可以给他发消息,关注他,以及其他针对个人用户的操作。而组织会在相应的区域显示一个图标,明确的告诉你,这不是一个个人用户。
接着往下看,个人用户和组织的页面都会显示一些基本资料和所开设项目的情况,个人用户还会显示关注和被关注的情况,以及一些近期活动,而组织则会在相应区域显示组织成员列表:
从一个用户页面,粗略的浏览一下,我们就能发现个人和组织的一些不同点。
2. 在什么情况下我们需要建立组织?
举个不恰当地例子,现实生活中我们运作公益活动,由于某些原因,刚开始有可能是以个人的名义来做的。随着活动的规模扩大,影响力提高,工作人员增加,个人的身份也会渐渐变得不合适,甚至影响活动本身的正常运作和发展壮大。为了活动更高效和规范的运作,我们可能会转而发起一个组织、团体,或者更进一步,通过法律途径去成立公司,注册商标。
GitHub 上托管了非常多的开源项目,其中不乏像 jQuery 这样由多个核心成员共同维护,有一个成熟庞大的社区来协助改进,代码提交非常频繁的项目。假设我们有一天也开源出来一个这样规模的项目,归属在一个个人用户名下,想想看会发生什么事情?等待你的可能是数不清的 message ,处理不完的 pull request …… 另一方面,项目成员虽然可以通过添加协作者的方式赋予权限,但还是无法对成员进行权限组划分。这个时候,我们可以考虑建立组织,把项目移交到组织名下,这样就可以非常方便的根据项目成员分工不同,来划分不同的权限组,对于外部的 pull request 压力也可以很好的分流,同时减少它可能产生的对个人项目的影响。非常好的一点是,在 GitHub 建立组织是完全免费的。
3. 如何建立组织?
在 GitHub 建立组织有两种方式:(1)将个人用户转换为组织;(2)以个人用户身份发起一个组织。
将个人用户转换为组织
为了演示这个过程,我在 GitHub 新建了一个 testorgs 账号。GitHub 建立账号的默认类型是个人用户,我们可以从账号设置页面进入组织分页,在这里有一个选项,就是将账号类型从个人用户转换成组织:
当然了,有一点必须告诉你,这个转换过程不但不可逆,还有可能造成信息丢失!所以转换之前一定要做好必要的准备。账号类型转换为组织以后,不但不能转回个人用户,甚至都不能够再登录进行任何操作。
账户转换前,必须从现有的 GitHub 用户中选出一些组织所有者(一般会是组织建立者的个人用户账号):
确认并完成转换后,账号会自动退出登录,并且不能够再登录,只能够通过选定的所有者账户进行操作:
访问账户页面,会发现它已经完成了账户类型的转换:
登录所有者的个人用户,发现刚才建立的组织已经在切换选项里了:
切换到 testorgs 这个组织,这里的操作跟个人用户基本相同,可以进行常规的项目相关操作:
组织设置页面的结构和个人用户基本相同,不同的是这里可以查看组织所有者和成员列表:
进入用户组页面,这里可以看到当前的用户权限组:
也可以新建其他不同权限的用户组,新增用户,给予特定项目的操作权限:
如果有一天这个组织不再有存在的必要,所有者同样可以进行删除操作:
上面这个过程要先建立个人账户,再转换成组织,通过指定的所有者来进行管理,看起来还是稍嫌麻烦。有没有办法直接使用个人用户以所有者的身份来发起一个组织呢?当然可以。
以个人用户身份发起一个组织
还是进入账户设置的组织页面,这里除了将个人账户转换为组织外(如果当前账号已经加入组织,该功能将不可用),还可以直接新建组织:
这个过程和前面的账号转换非常像:
当前使用的个人账户自动被添加为组织的所有者,同时你也可以同时添加其他个人帐号作为共同的所有者:
到这里,一个新的组织又建立起来了:
到这里,这篇简短的文章也该结束了,关于 GitHub 组织的更多功能,还需要各位自己去体验和实践。
之所以会有这篇文章,也是因为同事 @flashlizi 和 @大城小胖 开发的 HTML5 游戏引擎 QuarkJS 昨天发布了第一个开源版本,并且使用了 GitHub 来托管。为了更好的对项目进行维护和推广,同时又不影响他们个人托管的项目,因此选择了使用 GitHub 的组织功能。希望本文能对你有用,帮助你更好的管理自己所参与和主导的开源项目。
补充:微博上有同学推荐了 GotGitHub 这个项目,内容很全面,建议大家添加书签。另外这些问题同样可以在 GitHub 官方的帮助页面找到答案。
http://forcefront.com/2011/create-github-organizations/