对于一般公司的大型项目,我需要什么源代码控制?[关闭]


10

我知道Git非常适合开源项目。但是我想知道:对于一个有20位程序员从事1年项目的公司,哪个源代码控制系统是可取的?从我听到的声音中,Git使用拉动;需要经过别人来在主干中进行更改会不会比您期望的要少?尤其是当每个人都在同时工作时?

这只是我想知道的一个例子。我知道如何使用SVN,但是即使在上一份工作中,我们也没有在项目中使用SVN,因为所有操作都是在PHP中完成的,并且通常是独立的1周项目。我只是将SVN用于我的本地代码,而无需与其他人一起使用。

那么什么是好的源代码控制,特别是为什么这样做有好处呢?


13
因为您使用php编写代码不是不使用VCS的原因。
克里斯,2010年

@克里斯:如果由我决定,网络上会有一个存储库。但不幸的是,该公司根本没有使用它。我只是说我没有源代码控制的“团队”经验


Answers:


29

使用您的团队愿意使用的任何东西。所有版本控制系统都以相似的方式做大致相同的事情。没有理由重新发明轮子,因为“它可能会更好”。如果您的团队对任何事情都不满意,请选择与团队的标准IDE最容易集成的选项。


1
这是一个明智且无党派的答案-我喜欢。
Murph

1
+1源代码控制系统非常复杂,您可以采取任何措施来最大程度地减少这种情况!
Dal 2010年

3
分布式VCS的功能要比集中式VCS好得多,并且您始终可以将DVCS用作集中式VCS,因此对于长期的通用用途,我建议使用Git或Mercurial。在这种情况下,任何合理的现代VCS都可以很好地完成工作,Subversion可能是最容易学习的。
David Thornley,2010年

绝对使用您的团队知道或愿意使用的任何东西。(除非是CVS或RCS。)如果您切换到新内容并且每个人都必须学习,请算一下算术:20人* 3小时培训* $ 40 /小时= $ 2,400。
巴里·布朗

还是希望他们知道如何在5分钟内熟练掌握新的VCS ...
替代


4

我认为这取决于您需要的支持水平。

当我遇到问题时,我在家中使用git进行有趣的项目,但我可以花时间学习解决问题的方法。

在工作中,我们使用Perforce是因为必须提供24/7的技术支持。我们一直在纽约,德国,爱尔兰和日本从事代码工作的人员。如果有问题,我们必须尽快获得答案。以我的经验,Perforce的员工确实知道他们在做什么,并且乐于接受建议。


1
+1:Perforce的价格很高,但您能得到所要付出的代价。
没人

3

尽管我认为这个问题很广泛,应该根据您的IT框架和网络/开发结构在每个公司的基础上解决,但我认为选择源代码/版本控制的最重要方面不是您使用的是哪个应用程序,但是它的使用实际上是结构化和强制执行的。

使用的结构和实施是版本控制的最重要方面。

提前计划,让所有人参与进来。强制使用。不仅与程序员有关,而且与项目相关的所有内容(文档,图像等)。

SVN是一个很好的应用程序,可以与许多附加组件集成在一起(包括错误/任务跟踪),不需要单独的服务器,并且是免费的!

如@EricBoersma所说,还有其他良好的源代码控制应用程序:

使用您的团队愿意使用的任何东西。

只需制定流程和最佳实践,并从可以实施的流程中购买。


3

您对git的工作原理有一些误解。将拉取请求发送给网守只是一种方法。还有许多其他设置方法,包括几乎完全像svn一样,这就是有多少人在他们足够自定义之前就开始了。使用git这样的DVCS,您有足够的选择来围绕工作流程构建源代码控制,而不是相反。


2

我曾经认为源代码管理只是一种工具,并且每个产品或多或少都具有相同的功能。然后,这些分布式版本控制系统的意义便引起了我的兴趣。

分布式版本控制使您可以拥有多个中央存储库。想象一下代码更改从本地开发人员存储库迁移到功能存储库,再到产品存储库,再到质量检查存储库,最后到已发布的存储库。

我个人使用的商用产品Kiln是基于Hg的,但主要功能是分布式版本控制。它彻底改变了从开发人员到发行产品的新代码流程。


一个项目有很多存储库。合并真是一场噩梦。
JBRWilkinson

3
如果它与SubVersion或CVS合并,我会同意你的看法。这些分布式版本控制产品之所以起作用,是因为它们使合并变得简单并且在很大程度上没有冲突。
Michael Shaw 2010年

2

您知道如何使用SVN,然后使用SVN-仅在需要时才迁移到DVCS。

真正重要的是,您要使用易于使用的东西。Martin Fowler 对VCS 进行了快速简单的调查结果非常有趣。


2

我在上一个工作中建立了git,当时我们正在处理一个类似大小的项目(15个开发人员,18个月的项目),并且效果很好。

我们设置它的方式是:

我们有一个git服务器,它是我们的集中式权威git服务器。不鼓励团队成员直接相互拉扯,以便所有更改都进入中央服务器。

我们使用master分支作为主要生产分支,每个发行版都有标签。项目中的每个模块都是git子模块。每个子模块都有每个团队成员的分支。每个子模块都分配了一个维护人员(通常是原始作者),他们负责处理其他团队成员的请求请求,并向团队负责人发出请求请求,后者将在准备好更新主分支中的子模块时进行更新。被整合到生产部门。我们使用标签来标识完成特定功能或与发行版相对应的提交。


0

我会给Microsoft的Team Foundation System(TFS)至少一个漂亮的外观。我从您的评论中认为您不是Microsoft商店。但是,我的理解是,如果使用该IDE进行开发,则会有一个功能强大的Eclipse插件。

合并和分支机制的工作原理与其他任何源代码管理系统一样好(以我的经验,它比svn更好,并且与perforce一样好),但真正令人眼前一亮的是产品的项目跟踪和项目管理方面,以及用于构建和部署的内置自动化。

如果您正在编写基于Web的应用程序,请查看自动化的UI测试框架以及可以以相当短的顺序构建和配置的负载测试框架。一个时尚的功能:模拟负载测试中内置的移动浏览器。


以使用过Eclipse中TFS的人的身份发言。不,这太可怕了。(我可以详细介绍),但我绝对不会将其称为健壮的。TFS很棒,但是Eclipse扩展却非常糟糕(Visual Studio的AnhkSVN很棒)
Lyndon White

由于很多原因,我对TFS的体验非常非常糟糕,尽管我在Microsoft环境中工作,但总体上我喜欢.Net和Ms工具。我永远不会向任何人推荐TFS。
AFract
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.