将 TFS 2013 迁移到 Git

Migrate TFS 2013 to Git

在过去的 24 小时内,我一直在努力解决以下问题。

由于我们的开发团队使用 TFS(当前版本 2013)已有一段时间,我们决定将所有项目迁移到 git。

但不幸的是,这看起来并不那么容易。首先,我试过 git tfs,但每次我尝试克隆一个集合时,它都会说:

Access to path 'x' denied. 

相反,列出所有分支运行顺利。

因此,我试图通过尝试将 TFS 存储库转换为 TFS Git 存储库来解决这个问题,这样我就可以克隆它并将其推送到我们的 BitBucket 存储库。不幸的是,我找不到如何将 TFS 存储库转换为 TFS Git 存储库 - 只找到了如何创建现有的。

最后但同样重要的是,我什至尝试过 git tf - 但每次我尝试访问我的存储库时,它都会说:"Java....Main.class" 未找到。

关于如何从 TFS 成功迁移到 Git 的任何提示和技巧?

提前致谢!

Unfortunately, I cannot find how to convert a TFS repository to a TFS Git repository

只因没办法!这是一项非常艰巨的任务,由于 git 和 TFVC 的特殊性,因此 Microsoft 甚至从未尝试过这样做!

从某种意义上说,这就是工具 git-tfs 和 git-tf 试图解决的问题,但遇到了很多困难,主要是因为 TFVC 如何(太糟糕了!)在其存储库中管理和存储分支数据.

您唯一的希望是这两个工具中的一个。

不幸的是,git-tf 自 2 年以来不再受支持并且不支持分支:-(

git-tfs 尝试做得更好,但一些分支模式仍然会导致大问题:-( 在最后的情况下,没有分支支持的克隆是你最后的解决方案......

一些关于如何做的文档 https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/working_with_no_branches.md#clone-just-the-trunk

随时阅读 git-tfs git 中心网站上的更多文档。

Access to path 'x' denied.

您确定这不仅仅是一些权限访问问题吗?因为我从来没有听说过这样的问题...

Ps:Microsoft 看到从 TFVC 迁移到 git 的方式是更新到 tfs 2015 update 2 并将 git 存储库创建到与现有的 TFVC 项目并将源代码复制到 git 存储库。 TFVC 保留历史……如果需要的话。

TFVC 和 Git 是完全不同的版本控制模型(请参阅 https://en.wikipedia.org/wiki/Version_control 了解更多信息):这就像将数据从文件和目录移动到关系 DBMS 或将电动汽车与内部汽车进行比较内燃机。

我的建议是返璞归真,把需求说清楚。 :

  • 我需要迁移所有源代码吗?
  • 我需要迁移历史记录吗?
  • 我需要所有分支吗?

我的建议是关注您真正需要的东西,并寻求最快、成本最低的解决方案,通常是:

  1. 仅将我需要的源文件移至新系统并清除旧的未使用的东西(称之为车库清理)
  2. 锁定旧系统 read-only
  3. 拍摄最少分支的快照并将它们提交到新系统(不需要特殊工具)
  4. 不要在主要版本发布之前迁移,明智地选择时机,以便团队有时间学习新技术和解决问题
  5. 开始使用新系统,旧系统留作参考

第 2 项可以通过删除除管理员以外的所有人的权限来实现。我对第 3 步的想法是:克隆空仓库,在单独的 TFVC 工作区中获取最新的主分支,将文件同步到 Git 仓库(例如 robocopy /MIR /XD .git),提交、推送、创建和切换 Git 到分支 X,获取最新的 TFVC 分支 X,同步等。对要迁移的所有分支重复上述步骤。

还要考虑对代码库布局进行一些 次要 重构,并将其拆分为单独的 Git sub-trees 甚至 sub-modules.