我曾使用 JIRA / Subversion,现在使用 TFS 2010,我认为 JIRA / Subversion 是更好的工具。
我喜欢在一个集成包中包含源代码控制、工作项控制、构建控制、测试控制的想法,但不知何故,TFS 只是所有东西的below average implementation(Gated Checkin 除外,因为这很酷)。
TFS 版本控制与 VSS 一样使用绑定,因此对相同内容进行多次检出需要额外的努力。使用 TFS 搁置集暂停/恢复工作的能力是能够进行并发工作的官方解决方法。
TFS 有时会因为其 SQL 表锁而出问题,因此它已重新启动。 SQL 索引也随机损坏,因此突然显示文件夹历史记录需要几分钟时间。 VS2010 中的 TFS 需要一直在线才能进行任何源代码编辑,尽管这在 VS2012 中已得到修复。但是 VS2012/VS2013 GUI 与 TFS 集成得如此紧密,所以如果 TFS-server 出现问题,那么 VS 中的一切都会变得迟缓。这在新的 VS2015 CodeLens 中非常明显,应该禁用所有 TFS WorkItem Lookup,否则 VS2015 会比平时更频繁地卡住。
Visual Studio 在一个工作周内会出现一两次无法获取最新源的情况(有时是静默)。如果您尝试再次获取最新版本,那么它会说您已经拥有最新版本。当您执行构建时,它当然会失败。解决方法是通过强制覆盖执行获取特定版本。
要为文档创建 wiki,则需要 SharePoint,而 2010 版是一个非常糟糕的 wiki 工具。
由于某些非常奇怪的原因,Microsoft System Center(非常昂贵)完全脱离了 TFS 解决方案,并且像老妇人一样徘徊。使事件与 TFS 工作项同步变得非常困难,并使用 System Center 部署 TFS 构建。 VS2013 Update 4 现在包括几乎免费的 InCycles 发布管理,这应该可以使持续集成更好地工作(IIS 应用程序可以使用Web Deploy)。
如果您使用诸如发布分支之类的高级内容,那么您会惊讶于生成发布说明文档是多么困难(阅读需要不受支持的第 3 方工具)。 Work Items when merging 不会自动关联到发布分支。如果你突然想要发布一个新版本,那么创建一个发布报告来列出自上次发布版本以来所包含的更改/工作项将无济于事。
JIRA/Subversion 在 Visual Studio (VisualSVN) 中的集成要好得多(ankhsvn 是 VisualSVN 的替代开源版本)。还是不明白为什么 Tfs-annotate 不能像 Svn-blame 一样跳转到下一个以前的版本。
我不知道设置 TFS 2010/2012 的难度,但是 JIRA / Subversion / CruiseControl.NET 非常简单且便宜(猜想现在有人会使用 Git 和同样支持 Gated Checkin 的 Jenkins)。
VS2012 还包括对整个用户界面的重新设计,其中包括一个新的“改进的”TFS 团队资源管理器,作为开发人员使用它真的很痛苦(与 VS2010 相比)。微软已经声明Team Explorer has been fixed in VS2013,但事实并非如此。执行签入和关联 tfs-workitems 是鼠标单击地狱。
Visual Studio 2012 现在包含一个虚拟看板,但我会感到惊讶的是,JIRA 没有添加此功能。
当 Visual Studio 团队宣布他们将在 Visual Studio 2012 中实现 GIT 支持时,我感到非常惊讶。猜想这比尝试将 TFS 重写为分布式版本控制系统更容易。希望新的 GIT 集成能够达到 VisaulSVN 的标准。