Git 是一个分布式的版本控制系统,最初由 Linus Torvalds 编写,用作 Linux 内核代码的管理。在推出后,Git 在其它项目中也取得了很大成功,尤其是在 Ruby 社区中。目前,包括 Rubinius 和 Merb 在内的很多知名项目都使用了 Git。Git 同样可以被诸如 Capistrano 和 Vlad the Deployer 这样的部署工具所使用。
如前所述,作为一个分布式的版本控制系统,在 Git 中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。
GitHub 可以托管各种 git 库,并提供一个 web 界面,但与其它像 SourceForge 或 Google Code 这样的服务不同,GitHub 的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按 钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将 GitHub 称为代码玩家的 MySpace :
在 GitHub 进行分支就像在 Myspace(或 Facebook […])进行交友一样,在社会关系图的节点中不断的连线。
GitHub 项目本身自然而然的也在 GitHub 上就行托管,只不过在一个私有的,公共视图不可见的库中。开源项目可以免费托管,但私有库则并不如此。Chris Wanstrath,GitHub 的开发者之一,肯定了通过付费的私有库来在财务上支持免费库的托管这一计划。
是的,我们正是这么计划的。通过与客户的接洽,开发 FamSpam ,甚至是开发 GitHub 本身,GitHub 的私有库已经被证明了物有所值。任何希望节省时间并希望和团队其它成员一样远离页面频繁转换之苦的人士都会从 GitHub 中获得他们真正想要的价值。
Chris Wanstrath 还向 InfoQ 分享了关于 GitHub 的一些内幕信息:
GitHub 主要用 Rails 实现。我们目前在进行的 post-commit 集成小应用完全使用 Merb 编写。我们使用了 Python 的 Pygments 来做格式高亮显示,另外还用了 Ara T. Howard’s Bj 加上一些 Ruby 脚本来做我们的排队系统。当然,我们用了 Ruby Grit 库来和 Git 进行交互。
GitHub 已经有了一组引人注目的特性,除了命令式的库浏览器和一个项目 Wik,GitHub 甚至还包括了一个 GitHub gem ,以使通过 shell 方式使用 GitHub 更为方便。更多的未来特性已经在计划中:
许多人都希望能有一个条目系统,因此一个简单的条目系统已经在开发中。此外,正如我前面所言,我们尚在进行 RubyGems 服务器和一些之前留出的 post-commit 钩子方面的工作。如果你不能或就是不想托管一个你自己的守护进程,你可以使用我们所提供的。我们还在开发一些特性来帮助公司在使用 Github 时可以停留在 sync 之上。
最后,我们也在进行 API 发布方面的工作。我们很快就会发布一些只读性的 API,随后是一些很强大的“写”集成。你可以使用 API 将新的事件发布到新闻 feed 中,发消息和做其他许多很酷的事情。
目前 GitHub 尚未设定官方版本的发布日期,不过估计在三月底(现在 GitHub 已经上线,但只能通过邀请注册)。更多关于 GitHub 的信息可以参见 GitHub 官方网站或 GitHub 博客。目前通过GitHub 进行代码管理的开源项目列表也已经可以查阅。
评论