【问题标题】:Moving from TFS to Git or Mercurial strategy?从 TFS 迁移到 Git 或 Mercurial 策略?
【发布时间】:2013-12-24 08:21:24
【问题描述】:

我用谷歌搜索了这个网站,但没有发现任何真正有用的东西让我对它的迁移方法充满信心。

目前该公司正在使用 TFS,当我到达这里时,我计划将我们转移到 Git 或类似的,因此我致力于将我们所有的项目分组到一个分支中,因为它们分散在各处。现在我们有了这样的设置。

Root
---|Releases
-------|Dev
-------|Test
-------|Main
---|Features
-------|Feature1
-------|Feature2

Main 是我们的生产分支,是最精致和最干净的工作代码,当然 test 和 dev 不太精致。不过,它们都包含相同的一组应用程序文件夹。

features 文件夹包含用于功能开发的分支,因此它们基本上是从 Dev 修改的分支,然后我们在完成后将它们合并回 dev。

我想知道将源代码控制迁移到 Git 或 Mecurial 的最佳方法是什么。

我正在考虑将 Main 复制到 master 原点,然后从中创建一个分支并将 test 复制到该文件夹​​中,然后再将 test 分支到 dev 分支并做同样的事情。然后不理会功能分支并丢失其中的任何内容,或者让开发人员创建自己的分支来合并它们。

有没有更好的方法可以在一定程度上帮助保留历史?如果没有,上面描述的方法看起来是否可行?我担心的是,当我将 Main 分支然后将文件从 Test 复制到测试分支中的文件时,它将失去其关系或无法有效地确定更改。有什么想法吗?

我找到了这个,但我不确定如何使用它来获取我现有的 TFS 设置并使用我上面提到的设置将其移动到 git 存储库中。

http://gittf.codeplex.com/

【问题讨论】:

  • 您的布局似乎类似于分支的空间分区,而不是时间分区。这是否意味着有一个发布分支,其中 dev、test 和 main 分支远离?还是仅仅意味着您将这 3 个分支归为“发布”保护伞下?

标签: git tfs migration


【解决方案1】:

Team Foundation Server 似乎在其 2013 版本中具有本机 GIT 支持。见http://en.wikipedia.org/wiki/Team_Foundation_Server#Source_Control

这看起来很简单:更新您的版本,然后使用 GIT。完成。

【讨论】:

  • 是的,没那么容易。我们也可能不会使用他们的 git 存储库。您不能只是在存储库之间切换。我看到了 TFS2Git 和 git-tfs 脚本,但不确定它们是否适合我的情况,并希望获得有关该过程的更多信息。
【解决方案2】:

我认为您的问题没有一个简单的答案。我会在周末完成一个与冲刺之间切换有关的干净利落的事情。我会让每个人在周末之前检查他们得到的东西,然后我会合并从 Dev 到 Test 的所有内容,并将其用作我新 Git 存储库中的主干。从 Git 的 Trunk 中,我会创建必要的功能分支和发布分支。

在功能分支方案中,您不应该同时需要开发和功能分支。每当功能分支集成其代码时,您就可以测试 Trunk 中的所有内容。然后,您可以在需要稳定或验收测试发布时从主干创建发布分支。

  • 后备箱
    • 功能 1
    • 功能 2
    • 功能 3
    • 发布 Sprint 10
    • 发布 Sprint 11

等等

在我的方法中,您不会保留任何历史记录,并且您将不得不在 TFS 中维护您的发布分支(紧急修补等)一段时间,但我认为这是最干净的方式,您将在文件夹。可以在 TFS 中查找历史记录,因此只需锁定所有分支的签入(如果您需要执行紧急补丁等,可能是 Main 除外),这样您就不会冒险让人们将签入作为旧习惯。

祝你好运,无论你采取哪种方法。

顺便说一句:如果您还没有决定使用新的 SCM,请查看 PlasticSCM。这具有 Git 的分支/合并灵活性,以及​​与 TFS 相匹配的可视化工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 2013-11-02
    • 2018-09-08
    • 2014-10-20
    • 2016-04-20
    相关资源
    最近更新 更多