Git允许每个开发人员独立工作,并保留一份repository的拷贝。所以,除了开发人员的数据没有共享给其他人之外,不会带来任何的数据丢失的风险。这有别于集中版本控制的系统,例如subversion。
除了在项目提交的时候会提供标准的集中repository,Github其他情况下都没有改变这个模式。每一个fork实际就是每一个开发人员自己所拥有的独立的repository,而本地的repository又是另外一个拷贝。开发人员提交代码,同时Github的pull request实际上就是尝试把其中一组commit代码合并到另外一组;这样就可以保证开发人员上游的共享他们工作。
从设计来看,每一个开发人员都保留一份完整的repository的拷贝。这样像使用Github这样的服务的公司,出现数据丢失的风险非常的低。但是,当Github被多个公司的开发流程中使用时,问题就会出现。
例如,公司当中某些开发人员在本地完成了一些代码,然后想提交代码并发布到Github,但是他们并没有托管这些代码的基础设施的控制权。如果他们需要发布,但是Github却宕机,那他们就没办法发布代码。
Github同时还共享public和private repositories的基础设施,从而导致付费用户会受到免费用户宕机的影响。这就意味着,Github实际上是,向没有对外界公开代码的公司和开发人员收费,但提供没有任何保证正常运行的服务水平协议(SLA)。
Github提供企业服务选择,允许公司在自有的服务器上管理自己的Github。但这个选择并不适用于所有的机构,只适合于有充分IT预算的公司。Github没有提供任何类似于著名的服务水平协议的套餐。
很不幸,对于这个情况,我也没有任何的解决办法。Github是同类软件中的佼佼者,并且比其他类似软件都优秀,例如Google code。The Object Oriented PHP Masterclass这篇文章很好的解释了如何通过Github工具帮助学生们修正代码中的错误。我抱着怀疑的态度,我们开发组将来会使用其他软件替代Github。
我很乐意看到开源社区里面会出现替代Github的产品,虽然Github的动力来自于金钱,而且这会带来更大的动力去创建更好的产品。
评论删除后,数据将无法恢复
评论(0)