PHP内部投票:多数人支持迁移到 Git
openkk 13年前
<p>来自 PHP 内部<a href="/misc/goto?guid=4958189469033952184" target="_blank">消息</a>:</p> <p>PHP 内部在进行去集中化的版本控制系统讨论,经过两周的内部投票和讨论,现结果已出来:<br /> <br /> 52 票选择 Git<br /> 15 票选择 Mercurial<br /> 1 票选择 bazaar<br /> 13 票继续使用 SVN<br /> <br /> 这个投票结果显示选择 Git 是压倒性的。而具体的迁移工作估计要到今年12月才开始。</p> <p><br /> <a href="/misc/goto?guid=4958183577944756424" target="_blank"><span style="font-weight:bold;">Git是一个开源的分布式版本控制系统</span></a>,用以有效、高速的处理从很小到非常大的项目版本管理。</p> <p>Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。</p> <p>Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如,X.org 最近就迁移到 Git 上来了,很多 Freedesktop.org 的项目也迁移到了 Git 上。</p> <h2>Git与CVS的区别</h2> <ul> <li>分支更快、更容易。 </li> <li>支持离线工作;本地提交可以稍后提交到服务器上。 </li> <li>Git 提交都是原子的,且是整个项目范围的,而不像 CVS 中一样是对每个文件的。 </li> <li>Git 中的每个工作树都包含一个具有完整项目历史的仓库。 </li> <li>没有哪一个 Git 仓库会天生比其他仓库更重要。 </li> </ul> <br /> <div id="p_fullcontent" class="detail"> <p><a href="/misc/goto?guid=4958189470451666395" target="_blank"><span style="font-weight:bold;">Mercurial 是一种轻量级分布式版本控制系统</span></a>,采用 Python 语言实现,易于学习和使用,扩展性强。相对于传统的版本控制,具有如下优点:</p> <ul> <li><strong>更轻松的管理。</strong><br /> 传统的版本控制系统使用集中式的 repository,一些和 repository相关的管理就只能由管理员一个人进行。由于采用了分布式的模型,Mercurial 中就没有这样的困扰,每个用户管理自己的 repository,管理员只需协调同步这些repository。</li> <li><strong>更健壮的系统。</strong><br /> 分布式系统比集中式的单服务器系统更健壮,单服务器系统一旦服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而受到影响。 </li> <li><strong>对网络的依赖性更低。</strong><br /> 由于同步可以放在任意时刻进行,Mercurial 甚至可以离线进行管理,只需在有网络连接时同步。</li> </ul> <br /> <p><a href="/misc/goto?guid=4958188323216796773" target="_blank"><span style="font-weight:bold;">Bazaar 是一个分布式的版本控制系统</span></a>,它发布在 GPL 许可协议之下,并可用于 Windows、GNU/Linux、UNIX 以及 Mac OS 系统。Bazaar 由 Canonical 公司赞助,目前已服务于 Samba、Drupal 等知名的开源项目。</p> <p>Bazaar 当前已经包含许多有用的功能,这些功能使之具有如下鲜明的特点:</p> <ul> <li>容易使用</li> <li>稳定可靠</li> <li>使用灵活</li> </ul> Bazaar 也包括智能合并、支持插件、可与第三方工具整合、文档支持等其他特性。 <br /> <br /> <p><a href="/misc/goto?guid=4958184358267976870" target="_blank"><strong style="font-weight:bold;">Subversion</strong><span style="font-weight:bold;">是一个版本控制系统</span></a>,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上免费的版本控制服务多基于Subversion。<a name=".E5.84.AA.E6.96.BCCVS.E4.B9.8B.E8.99.95"></a></p> <h2>优于CVS之处</h2> <ul> <li>原子提交。一次提交不管是单个还是多个文件,都是作为一个整体提交的。在这当中发生的意外例如传输中断,不会引起数据库的不完整和数据损坏。</li> <li>重命名、复制、删除文件等动作都保存在版本历史记录当中。</li> <li>对于二进制文件,使用了节省空间的保存方法。(简单的理解,就是只保存和上一版本不同之处)</li> <li>目录也有版本历史。整个目录树可以被移动或者复制,操作很简单,而且能够保留全部版本记录。</li> <li>分支的开销非常小。</li> <li>优化过的数据库访问,使得一些操作不必访问数据库就可以做到。这样减少了很多不必要的和数据库主机之间的网络流量。</li> </ul> <h2>使用情况</h2> <p>虽然在 2006年 时 Subversion 的使用族群仍然远少于传统的 CVS,但已经有许多开放原码团体决定将 CVS 转换为 Subversion。已经转换使用 Subversion 的包括了 FreeBSD、Apache Software Foundation、KDE、GNOME、GCC、Python、Samba、Mono 以及许多团体。有许多的团队换用 Subversion 是因为 Trac 所提供的专案管理环境。除此之外,一些自由软件开发的协作网如SourceForge除了提供 CVS 外,现在也提供专案开发者使用 Subversion 作为原码管理系统, JavaForge、Google Code以及 BountySource 则以 Subversion 作为官方的原码管理系统。</p> <br /> </div>