TFS for Java - 坏主意?

2022-09-02 02:32:06

我们正在考虑将 TFS 用于基于 .NET 的项目,并将其作为任务管理平台。有些团队只用Java开发,他们对SVN(Subclipse)非常满意。

我们的经理提出了以下问题:

  • 我们是否也应该将 Java 团队迁移到 TFS?
  • TFS(仅限源代码管理)是否能很好地处理 Java 项目?
  • 将我们的 Java 代码库和历史记录从 Subclipse 迁移到 TFS 是否很痛苦?

目前,出于可维护性原因,我们希望使用 TFS 作为唯一的源代码管理平台。我们希望避免我们的IT人员支持多个系统。

谢谢


答案 1

完全披露,我在为TFS编写Java工具的团队中工作,因此请将此答案视为适当的偏见:-)

就TFS而言 - 所有代码都是平等的。它只是文件中的字节,它签入到版本控制。像所有SCM系统一样,它并不关心文件是用什么语言编写的。

Microsoft 为 Eclipse 提供了一个完整、丰富的 TFS 插件(称为 Team Explorer Everywhere)。这提供了完整的源代码管理,工作项跟踪,构建,Sharepoint,报告访问等,从基于Eclipse的IDE到TFS。它是用100%Java编写的,并直接与TFS公开的Web服务进行通信。

此外,我们还为TFS提供了一个跨平台命令行客户端,以便您可以在您选择的操作系统(Mac,Linux,Solaris,HP-UX,Aix等)上从命令行与TFS进行通信。

最后,如果您有用Java编写的想要与TFS通信的工具,那么它们可以使用TFS SDK for Java,这是我们用于创建Eclipse集成和跨平台命令行客户端的完整API,但与示例和代码片段打包在一起,并准备与应用程序一起重新分发。

在构建方面,您有几个选择。如果你想坚持使用当前的构建服务器,那么这可能已经支持与TFS通信(所有流行的开源构建服务器都支持)。除此之外,Microsoft 还提供了 TFS 构建扩展,允许您在 Team Foundation Build 服务器上运行基于 Ant 或 Maven 的构建。如果在生成过程中执行 JUnit 测试,则生成结果(以及任何警告或错误)将与任何 JUnit 测试数据一起发布回 TFS。此外,您还可以在Eclipse IDE中创建和管理构建定义,并在一个地方管理对它们的访问等。

因此,对Java的支持水平非常高,微软在这一领域表现出了持续的投资。我们最近发布了一些 TFS 2010 Power Tools for Eclipse,我们还发布了 Team Explorer Everywhere 11 的预览版以及 Team Foundation Server 11(我们是公司内部的同一个团队)。

要从 SVN 导入历史记录,这与将历史记录从任何 SCM 工具导入 TFS(或 TFS 导入任何 SCM 工具)相同。您有几种选择。您可以拍摄快照并在特定时间点(如版本)进行剪切,也可以迁移历史记录。要从SVN迁移历史记录,有一些合作伙伴解决方案可用,包括一个来自及时迁移的解决方案,我已经看到很多客户都取得了成功。

希望有所帮助。


答案 2

在使用TFS的Java / JVM项目上工作了一年之后,我想劝阻任何人不要这样做。虽然 TFS 可能被认为是 .NET 开发人员的首选,但你不会找到任何具有任何经验的 Java 开发人员。有Eclipse的插件和IntelliJ的端口,但我在两者上都有可怕的运气,尽管我猜这主要是因为TFS不像我使用过的任何其他VCS那样工作。

在我们的团队中,我们估计由于TFS及其引起的并发症,会产生10-15%的开销。由于 TFS 决定覆盖文件而丢失了数天的工作,以及由不完整的 TFS 更新导致的故障排除问题数天。我们在6个月内完成了一个分支,因为整个团队在我们最后一次这样做时损失了两天。经常听到这样的短语“我刚刚更新了您最新的更改,您可以来检查以确保合并中没有任何内容消失吗?我们没有使用Jira,而是坚持使用TFS中可怕的问题跟踪,导致更多问题。

团队中的一些开发人员已经开始使用git,无论是独立的还是git-tfs桥接的。其他人只是在任何“有风险”的活动(如更新或签入)之前复制源代码树。

无论哪种方式,我都不会推荐给一个没有经验的团队......


推荐