我们将在我工作的公司开始一个新项目。这是一个C ++和C#的软件开发项目,在三个地点有大约6-8名开发人员。
此处较旧的项目使用SVN和自定义问题跟踪器,但计划切换到TFS。对于这个新项目,我想说服管理层使用GitHub Enterprise而不是TFS。我对TFS没有太多经验,但我已经使用了很多git,并且有一些GitHub经验。
我特别询问完整的体验,即版本控制,问题/错误跟踪和Wiki的集成。这里有一些related个问题,但它们只关注版本控制方面。所以:
- GitHub Enterprise相对于TFS有哪些主要优势?
- TFS提供的优势比GitHub Enterprise无法复制?
- 这两种解决方案中的哪一种能够为持续集成提供更好的支持?
所有开发都将在使用Visual Studio的Windows机器上进行(2010年,可能是2012年)。
2 个答案:
答案 0 :(得分:8)
好吧,我不能给你一个完整的答案。但是我们看看TFS for Java开发,这里有一些可能对您有意义的要点。
- 我们使用TFS遇到路径+文件名的长度限制。这似乎更有可能是Java,因为C#中的包装是以不同的方式完成的
- 锁定:以某种方式创建文件将其锁定在TFS中(或为其保留“点”)。当人们不在房间里修理这些文件时,这非常烦人。对于分布式团队,我无法想象它应该如何运作。
- CI与Java混乱。它工作但与Jenkings / Hudson / Bamboo / TeamCity相比,我不会将它用于Java。使用C#可能更有趣,因为TFS允许CI构建的工作流程。因此,某些构建可以升级为自动部署。但我从未在现实生活中使用过它。我只是喜欢这个主意:)
- TFS中的问题跟踪是可以的。还有一些Scrum / Agile规划插件
- TFS维基是浪费时间。但GitHub wiki基于Git,所以人们需要编写标记。这对开发人员来说没问题,但我对团队成员来自该领域有些怀疑。
- 我不知道GitHub有内置的CI吗?我知道的所有CI服务器都支持Git。
- Git Windows客户端有点奇怪。 msysgit客户端有路径长度限制,cygwin one os甚至更奇怪(只是感觉)但两者都很好用。 GitHub有一个自己的客户端 - 我不知道它是基于什么。
考虑到你的团队已经分发,我会选择Git。它将允许更灵活的工作流程。如果网络稳定,TFS肯定也能完成这项工作。如果您之前使用过SVN:TFS作为源控件肯定会让人失望。但是习惯使用VisualStudio和MS-Server-Parts的开发人员与它的冲突要少得多。
再次:我们尝试(或不得不尝试)使用TFS + Java,使用C#+ Visual Studio这是一个完全不同的故事。那里的整合会好得多。然而,我的一些观点可能仍然有用:)
答案 1 :(得分:4)
我不能特别评论TFS,因为我对它的唯一体验是短暂的,非常不愉快,所以我不会。
然而我定期使用git和github(企业版),我使用过各种集中式VCS(rcs,cvs,svn,synergy)和分散式VCS(hg,git)。
我认为除了一些辅助功能差异之外,GIT和TFS之间的主要区别在于,从根本上说TFS是一个集中式系统(如rcs,cvs,svn和synergy),而git是一个分散式系统(dvcs)。这起初可能看起来不那么明显,但它具有深远的影响。
- dvcs repo的克隆包含整个历史记录,因此您可以继续工作,切换分支,提交功能等,如果网络中断,服务器没有响应,您正坐在飞机等等。
- 由于提交对于克隆的存储库来说是本地的,因此您可以通过创建存储库的功能克隆来处理某个功能,从而可以使用一个额外的自由度(与分支等正交),如果不能解决,只需删除存储库,如果你没有推送,它将永远不会进入上游存储库的历史记录。
- DVCS不指定特定的工作流程。您可以随心所欲地构建团队互动(分层,正交,扁平,集中,有什么)。这是一个很大的优势,可以帮助团队成长(和缩小),而不会留下无法通过设计满足他们需求的系统。
- GIT(以及hg)直接支持补丁集/被子等内容,可用于连续集成。这在集中式VCS中通常很难做到,所以大部分都没有完成(我不知道TFS是否具有这些功能)