0

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

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

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

4

3 回答 3

3

与之前的答案相反,我强烈建议不要使用 Git,至少现在。我懒得重复我的观点并再次与 Git 狂热分子开始火热。但是 - 对于大多数团队来说,选择 Git 作为第一个 SCM(和 DVCS)是最糟糕的选择。

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

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

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

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

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

从另一个 POV:

  1. CVCS(作为类和 SVN 作为“同类最佳”)将在企业中生活和使用很多年(IMNSHO) - 并且能够以良好的方式使用 Subversion 将永远是加分项

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

待定

于 2012-10-24T03:31:57.507 回答
2

两个最大的选择是在 git 和 Subversion 之间。Git 是分布式版本控制系统,而 Subversion 是集中式的。正如我告诉许多人的那样,它们是不同的,没有一个更好,也没有一个更差。每个人都有自己的优势,视情况而定。

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

我建议您下载 Subversion,并阅读Subversion 在线手册并尝试使用它。这并不是说要使用 Subversion。这只是为了让您了解如何使用版本控制系统。

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

Git 在像您这样的情况下大放异彩的地方在于您不需要运行 Git 的集中式服务器。每个人都有整个存储库的副本,您可以直接在团队成员之间传递更新,而无需将您的更改签入中央服务器。您可以通过电子邮件相互发送 Git 补丁。或者,您甚至可以使用Dropbox中的集中式 Git 存储库并从那里推送和拉取本地副本。(永远不要直接使用该存储库!)。主要问题是确保团队中的每个人都获得与其他人相同的更新。如果您不小心,这就是 Git 可能崩溃的地方。

现在,如果您碰巧有一个集中式服务器,并且使用 Subversion,那么设置一个 Subversion 存储库服务器非常简单。Subversionsvnserve是一个非常轻量级的服务器,它可以设置为Windows 服务。如果您更喜欢 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。如果不为专业版付费,您将无法使用前端来执行此操作。但是,我不确定他们的许可协议到底是怎么说的。

于 2012-10-24T01:44:09.563 回答
0

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

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

  1. 早点入住,经常入住。
  2. 不要提交损坏的代码。

如果没有分布式版本控制,这些规则将相互强烈冲突。

你需要一个非常成熟和纪律严明的团队来使用 Subversion 来完成这项工作。

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

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

于 2012-10-24T19:38:29.093 回答