从TFS迁移到GIT,共享项目迁移到nuget

从TFS迁移到GIT,共享项目迁移到nuget,git,version-control,tfs,nuget,visual-studio-2013,Git,Version Control,Tfs,Nuget,Visual Studio 2013,我在一个软件团队中工作,该团队由4-5名开发人员组成,他们在一个TFS项目中工作。我们正在考虑将整个代码库迁移到GIT。代码库由大约50个visual studio(2013)解决方案组成,分为大约300个项目。在项目中引用另一个程序集的首选过程是将项目添加到解决方案中,依此类推。我想这被认为有点混乱,但它有它的好处: 1:如果源代码更新到最新版本,那么项目在构建时将始终使用最新版本进行更新 2:创建发布分支时,将存储源状态的完整图片,如果需要,可以很容易地复制发布 当考虑迁移到GIT时,最简单

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

1:如果源代码更新到最新版本,那么项目在构建时将始终使用最新版本进行更新

2:创建发布分支时,将存储源状态的完整图片,如果需要,可以很容易地复制发布

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

在一次GIT回购中,将50个左右的解决方案分为300个项目,这会很难使用吗?我担心会失去对每个开发人员每天执行的更改的概述

另一种方法,我认为这是正确的方法,就是远离共享项目制度,用自己的GIT回购协议将代码库划分为逻辑上划分的部分。(我猜这将给我们留下大约10-20份回购协议)。为了解决此问题中的引用项目,我们正在考虑使用本地nuget服务器

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

我担心会失去对每个开发人员每天执行的更改的概述

不,您不会失去这个概述,并且可以轻松地衡量一个合作者的贡献(例如)

这些功能还能保持吗

是:这10-20个项目将在一个母公司回购协议中重新合并,如
您可以很容易地,像它的
分支一样。
有关该配置的更多信息,请参见“”,然后单击

  • 自动更新:

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

    cd /parent/repo
    git add .
    git commit -m "Freeze all submodules SHA1"
    
正如在评论中提到的,Visual Studio 2013及其子模块尚未包括子模块。是的。

Git命令行仍然可以用于使用子模块的更新/冻结步骤。

如果您使用TFS 2013迁移到Git,请注意子模块还不受支持,并且Visual Studio Git工具也不知道如何处理它们。但也可以使用命令行中的子模块。@jessehouwing有一个很好的观点。我已经在答案中加入了它,以提高可视性。我想从一开始就学习命令行git是明智的。除了TFS 2013,我还考虑使用SourceTree。我不知道SourceTree是否支持子模块,但我肯定会检查一下。谢谢你的大力支持@JanPetterJetmundsen您可以使用任何想要的GUI(自2012年第1季度1.3起,SourceTree支持子模块:)。但是,除了任何其他与Git相关的工具之外,您还可以在命令行中安装Git。当其他工具失败时,这是一个很好的选择。