<分区>
我们将在我工作的公司开始一个新项目。这是一个使用 C++ 和 C# 的软件开发项目,在三个地点有大约 6-8 名开发人员。
这里的旧项目使用 SVN 和自定义问题跟踪器,但计划切换到 TFS。对于这个新项目,我想说服管理层使用 GitHub Enterprise 而不是 TFS。我没有太多的 TFS 经验,但我经常使用 git,并且有一些 GitHub 经验。
我具体问的是完整的体验,即版本控制、Issue/Bug跟踪和Wiki的集成。有一些related这里的问题,但他们只关注版本控制方面。所以:
- 与 TFS 相比,GitHub Enterprise 的主要优势是什么?
- TFS 提供了哪些 GitHub Enterprise 无法复制的优势?
- 这两种解决方案中哪一种能更好地支持持续集成?
所有开发都将在使用 Visual Studio 的 Windows 计算机上进行(2010 年,也许是 2012 年)。
好吧,我不能给你一个完整的答案。但是我们了解了用于 Java 开发的 TFS,这里有一些您可能也会感兴趣的 Gist 。
- 我们在使用 TFS 时遇到了路径+文件名的长度限制。对于 Java,这似乎更有可能,因为 C# 中的打包方式不同
- 锁定:创建文件以某种方式将其锁定在 TFS 中(或为其保留一个“位置”)。当人们不在房间里修复这些文件时,这变得非常烦人。对于分布式团队,我无法想象这应该如何工作。
- 使用 Java 的 CI 很困惑。它有效,但与 Jenkings/Hudson/Bamboo/TeamCity 相比,我不会将它用于 Java。使用 C# 可能更有趣,因为 TFS 允许 CI 构建的工作流。因此某些构建可以提升为自动部署。但我从未在现实生活中使用过它。我只是喜欢这个主意 :)
- TFS 中的问题跟踪正常。还有一些 Scrum/Agile 计划插件可用
- TFS wiki 是在浪费时间。但是 GitHub wiki 基于 Git,因此人们需要编写标记。这对开发人员来说没问题,但我怀疑我们的团队成员来自那个地区。
- 我不知道 GitHub 有任何内置的 CI?我知道的所有 CI 服务器都支持 Git。
- Git Windows 客户端有点奇怪。 msysgit 客户端有路径长度限制,cygwin 一个操作系统更奇怪(只是感觉),但两者都工作得很好。 GitHub 有自己的客户端 - 我不知道它基于什么。
考虑到您的团队是分布式的,我会选择 Git。它将允许更灵活的工作流程。如果网络稳定,TFS 肯定也能完成这项工作。如果您以前使用过 SVN:TFS 作为源代码控制肯定会惹恼人们。但习惯了 VisualStudio 和 MS-Server-Parts 的开发人员与它的冲突要少得多。
同样:我们尝试(或必须尝试)使用 TFS + Java,使用 C# + Visual Studio,这是一个完全不同的故事。那里的整合会好得多。然而,我的一些观点可能仍然有用:)