Git-tf 和 git-tfs 有什么区别?

我最近真的受够了 TFS。不过我听说隧道的尽头有一道光。显然,我可以使用 git-tf 或 git-TFS,并将我的代码视为由 git 管理的,但是可以从中央 TFS 服务器推送/拉取。

我的主要问题是,我不确定我应该使用其中的哪一个。微软官方支持 git-tf,而 git-tfs 已经存在很长时间了。这两者之间有什么区别? 我应该先试验哪一个?

19612 次浏览

免责声明: 我 启动了 git-tf项目,虽然项目现在在非常有能力的手中没有我作为一个频繁的贡献者,你绝对应该考虑我的意见,这是 很强烈偏见。(而且,假设你使用的是 Windows 系统,也许会出乎意料。)

这两种工具有两个根本的区别:

  • git-tfs是为 Windows 用户构建的,并在。NET TFS SDK.TFS SDK 将在 Mono 下运行 没有,因此这使得 git-tfs不适合跨平台使用。

  • git-tf是为跨平台用户构建的,并编写在 JavaTFS SDK 之上。因此,它可以运行在任何 Java TFS SDK 支持的地方(Windows,Mac,Linux,AIX,HP-UX,Solaris 等等)。.)显式创建 git-tf是为了允许 Xcode 用户访问 TFS。

当然,在 Windows 上,您可以使用。我不会说一个比另一个好。但我会说:

  1. 我对 git-tfs最大的抱怨是它不能在 Mac OS 上工作。如果有办法使 git-tfs跨平台,那么 git-tf几乎肯定不会存在。

  2. 在某些情况下,git-tfs再快点,而不是 git-tf。性能是 没有在最初的几个修订版中我们的首要任务,正确性是。

  3. 因为 git-tf具有广泛的平台支持矩阵,这意味着它的功能必然受到限制。例如,有 没有UI。另一方面,git-tfs有一个 checkintool命令,它将打开普通的 TFS Checkin 对话框。这对于可视化您的更改非常有帮助。(如果我没记错的话,你可以从那里打开一个适当的视觉差异,等等。)

  4. git-tf的工作原理是直接填充 git 存储库,将 TFS 对象直接下载到 git 对象数据库中。git-tfs的工作原理是在隐藏文件夹中创建 TFS 工作文件夹映射,然后从该文件夹填充 git 存储库。这里有一个磁盘损失,所以如果您拥有超级庞大的存储库,您可能会感觉到这一点。

  5. git-tfs可以尝试将 TFS 分支映射到 git 分支。很多人会认为这对 git-tfs是一个积极的影响,但是我不这么认为: git 的分支模型(在存储库级别)和 TFS 的分支模型(在存储库中表示为文件夹)是如此的不同,以至于除了最简单的工作流之外,任何东西都会出现问题。但是你的情况可能会有所不同。

  6. git-tfs是由一个社区积极开发的。 git-tf还没有被社区采用。

我不想让人觉得我说 git-tf很糟糕。不是的。我觉得还不错。但这可能不是你最好的选择。


更新: git-tf已经报废。它不再由 Microsoft 维护或支持。如果需要双向 TFS <-> git 解决方案,我们建议使用 git-tfs

免责声明: 我是 git-tfs 项目的开发人员

编辑: 围绕 git-tfs 减少了的活动。

在 git-TFS 中支持 TFS 分支(使用 branch命令获取现有分支、创建分支、合并分支比使用 TFS 更容易)。它工作的大部分时间,但不与复杂的 TFVC 分支工作流程..。

参见:

Git-TFS 也许是唯一允许您从 TFS (VC)迁移到 TFS (Git)、管理工作项(如果需要)或普通 Git 存储库的工具。

还有其他一些优点。

(这是更多的 激活和更多的 支持)

发现这条帖子的人请注意:

Git-TF在2013年之后没有更新,现已正式停止,现在明确建议将 Git-TFS作为替代品。

Git-TF-End-of-Life

Git-TF 已经寿终正寝,不会再有更新,微软也不再支持它。

MicrosoftVisualStudioTeamServices 现在提供了一个简单的导入工具,用于将 TeamFoundation 版本控制存储库导入到 Git 存储库中。我们建议您使用它将 TFVC 存储库转换为 Git。

如果您需要更高级的转换需求,或者希望桥接 TFVC 存储库并使用本地 Git 存储库 我们推荐 git-tfs 项目

Git-TF 不应该用于新的项目,但是对于遗留用户,它将保留在 Codrux 归档文件中。

(2017年4月,该项目的 共耗尽页补充章节由其发起人和公认答案的作者爱德华 · 汤姆森撰写)

Git-TFS似乎得到了积极维护: Https://github.com/git-tfs/git-tfs/commits/master