我们是否需要为学校项目提供DVCS?

时间:2012-10-23 20:47:04

标签: git svn version-control mercurial google-code

我们即将开始一个简单的Web服务项目,其中包含一些JSP / servlet代码作为课程的一部分。我们是一个由4人和3人组成的团队,从未使用过版本控制软件。我计划在谷歌代码上主持项目,以便我们可以处理我们的时间,仍然可以访问代码,版本控制等。我需要在SVN和Mecurial / GIT之间进行选择。鉴于代码相当小,选择DVCS而不是SVN有什么特别的优势吗?我觉得与Git / Mercurial相比,学习SVN更容易。

PS:GUI客户端将使生活更轻松。 Git有什么好的吗?

PPS:我略微倾向于DVCS,因为我想学习它,嘿!学年是最好的学习时间!

3 个答案:

答案 0 :(得分:3)

与之前的回答相反,我强烈建议不要使用Git ,至少现在。我懒得重复my points并再次与Git狂热分子开始发火焰。但是 - 在大多数团队中选择Git作为第一个SCM(和DVCS)是最差选择。

  

我觉得与Git / Mercurial相比,学习SVN更容易

SVN和Hg的学习曲线可能被认为几乎相等(两侧都有一些不同的头痛)

  

鉴于代码相当小,选择DVCS而不是SVN有什么特别的优势吗?

没有重复讨论很多次点(感谢@ AD7six的链接) - 是的,有... 一些 ...

  1. 使用Subversion,您(团队)必须拥有并维护至少一个中央服务器并对其进行访问。使用Mercurial的hg serve每个人都可以按需进行p2p通信
  2. 新手可以踩上SVN-rake(注意很多“Merge Hell”,fe)相当简单:它仅仅部分取决于codebase-size,它主要是工作流程,依赖于样式:没有进程的长时间分支同步,严重重构代码的树冲突(早期阶段的通常情况),忽略分支和巨大的无法管理的提交(“主干必须始终工作”口头禅)

  3. 来自另一个POV:

    1. CVCS(作为类和SVN作为“同类最佳”)将在公司生活和使用很多年(IMNSHO) - 并且能够以良好的方式使用Subversion将始终加上

    2. Subversion 自动教授设计和规划的纪律和准确性,而在DVCS中,它只是协议,而不是要求(在某种程度上,确定)

    3. TBC

答案 1 :(得分:2)

两个最大的选择是在git和Subversion之间。 Git是一个分布式版本控制系统,而Subversion是集中式的。正如我告诉很多人的那样,他们是不同的,没有一个更好,一个更糟。根据具体情况,每种都有自己的优势。

Subversion更易于使用,并且具有更好的文档。 Git复杂性来自于它是一个分布式系统,因此您拥有本地存储库和远程存储库,这意味着现在有两个存储库正在向您发送更新。对于许多人来说,这可能会变得非常混乱 - 特别是对版本控制系统不熟悉的人。

我建议您下载Subversion,然后阅读Subversion on line manual并使用它。这并不是说使用Subversion。这只是为了让您了解如何使用版本控制系统。

现在,为了满足那里的Git粉丝:Git比Subversion有一个很大的优势:它是分布式的。在Subversion中,您必须拥有一个集中的存储库。这意味着设置Apache服务器,或至少在每个人都可以访问的某台机器上运行svnserve Subversion服务器进程。你有一个躺在那里?大多数小型团队都没有。

Git在像你这样的情况下闪耀的地方是你不需要运行Git的集中式服务器。每个人都拥有整个存储库的副本,您可以直接在团队成员之间传递更新,而无需将更改检查到中央服务器。您可以通过email向对方发送Git补丁。或者,您甚至可以在Dropbox中使用集中式Git存储库,并从那里推送本地副本。 (不要直接使用该存储库!)。主要问题是确保团队中的每个人都获得与其他人相同的更新。如果你不小心,这就是Git崩溃的地方。

现在,如果您碰巧拥有一个集中式服务器,而是使用Subversion,那么设置Subversion存储库服务器非常简单。 Subversion附带svnserve,它是一个非常轻量级的服务器,可以设置为Windows service。如果您更喜欢Apache httpd作为服务器,您可以从许多不同的来源免费获得Subversion服务器包。以下是一些:

  • VisualSVN :仅限Windows。除非你想做一些像使用LDAP,Active Directory或SSL这样的事情,否则是免费的。 1
  • UberSVN :适用于Windows,Mac或Linux。与VisualSVN相同的限制。 1
  • CollabNet Subversion Edge :完全开源的解决方案。设置不像其他两个那么容易,但并不是那么困难。这就准备好将LDAP / Active Directory用于用户帐户,并且设置SSL证书非常简单。

1 这些软件包是完整的Apache httpd和Subversion软件包,所有软件包都集成在一个简单的安装中。如果您放弃GUI前端,则可以自己设置LDAP / Active Directory或SSL。如果不支付 pro 版本,则无法使用前端执行此操作。但是,我不确定他们的许可协议到底是什么意思。

答案 2 :(得分:0)

如果你们大多数人之前没有使用任何版本控制软件,我建议你从Mercurial开始。 Git是Mercurial的大哥,可能有点吓人。

使用版本控制有两个主要规则:

  1. 提前入住,经常入住。
  2. 不要提交损坏的代码。
  3. 如果没有分布式版本控制,这些规则会相互冲突。

    你需要一个非常成熟和训练有素的团队来使用Subversion。

    使用Mercurial或Git,开发人员每小时多次承诺使用他们的私人克隆。一旦 他们很满意并且他们的代码很稳定,他们从中央存储库中获取最新的更改。如果合并成功,您的版本将成为新的“主干”,“主要”或“默认”,同时保留两个流的历史记录。

    查看Joel Spolsky的HgInit全文。还可以查看Bitbucket;他们为最多五人的团队提供免费的Git或Mercurial托管服务。当然,还有github