【问题标题】:Migrating from TFS to GIT, Shared projects to nuget从 TFS 迁移到 GIT,共享项目到 nuget
【发布时间】:2014-01-18 08:35:39
【问题描述】:

我在一个由 4-5 名开发人员组成的软件团队工作,他们在一个 TFS 项目中工作。我们正在考虑将整个代码库迁移到 GIT。代码库由大约 50 个 Visual Studio (2013) 解决方案组成,分为大约 300 个项目。在项目中引用另一个程序集的首选过程是将项目添加到解决方案等。我想这被认为有点乱,但它有它的好处:

1:鉴于源代码已更新到最新,项目在构建时将始终更新为最新。

2:创建发布分支时,会存储源状态的完整图片,如果需要(何时)可以很容易地重现发布。

在考虑迁移到 GIT 时,最简单的方法是简单地迁移所有解决方案和项目,就像迁移到单个 GIT 存储库一样。这引出了我的第一个问题。

在一个 GIT 存储库中将 50 个左右的解决方案分为 300 个项目,这样的集合会很难处理吗?我害怕失去对每个开发人员每天执行的更改的概述。

另一种方法,我认为这是正确的方法,是远离共享项目制度,将代码库划分为具有自己的 GIT 存储库的逻辑划分部分。 (我猜这会给我们留下大约 10-20 个回购)。为了解决这件事中引用的项目,我们正在考虑使用本地 nuget-server。

这引出了我的第二个(也是最后一个)问题。 看看上面提到的福利。这些功能还能保持吗?我们能否“自动更新”工作分支中的 nuget 引用,但将它们冻结到发布分支上的特定版本?

【问题讨论】:

    标签: git version-control tfs nuget visual-studio-2013


    【解决方案1】:

    我害怕失去对每个开发人员每天所做更改的概述。

    不,您不会失去概述,并且可以轻松衡量一位合作者的贡献(例如,in this answer

    这些功能还能保持吗?

    是的:这 10-20 个项目将在一个父 repo 中重新组合,如 submodules
    您可以轻松地configure a submodule to follow a branch,就像它的master 分支一样。
    在 "Git submodules: Specify a branch/tag" 和 git submodule 上查看有关该配置的更多信息。

    • 自动更新:

      git submodule update --remote --init --recursive
      
    • 冻结:

      cd /parent/repo
      git add .
      git commit -m "Freeze all submodules SHA1"
      

    正如 jessehouwing 在 cmets 中所提到的,Visual Studio 2013 及其 native Git support 尚不包含子模块。是highly requested though
    Git 命令行仍然可用于使用子模块的更新/冻结步骤。

    【讨论】:

    • 如果您使用 TFS 2013 迁移到 Git,请注意尚不支持子模块,并且 Visual Studio Tools for Git 并不真正知道如何处理它们。不过,可以从命令行使用子模块。
    • @jessehouwing 好点。我已将其包含在答案中以提高知名度。
    • 我想从一开始就学习命令行 git 会很聪明。除了 TFS 2013 之外,我正在考虑使用 SourceTree。我不知道 SourceTree 是否支持子模块,但我一定会检查一下。感谢您的宝贵意见!
    • @JanPetterJetmundsen 您可以使用任何您想要的 GUI(SourceTree 从 1.3 开始支持子模块,2012 年第一季度:blog.sourcetreeapp.com/2012/02/01/…)。但是您可以在命令行中安装 Git,除了任何其他与 git 相关的工具。当上述其他工具失败时,这是一个很好的选择。
    猜你喜欢
    • 2011-02-21
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2016-01-02
    相关资源
    最近更新 更多