将依赖关系纳入分支策略?

时间:2014-06-28 10:27:19

标签: tfs nuget tfs2013 alm

我正在研究简化当前的源代码库和解决方案设置。现在,它非常复杂和巨大,即使是最简单的代码,也可能非常耗时。

为简单起见,我们说我有以下设置:

  • 我有一个网站项目(W1)
  • 我有2个网络服务项目(S1,S2)
  • 我有3个类库项目(L1,L2,L3)

他们由3个解决方案管理:

  • 1包含W1,L1,L2,L3并使用对S1和S2的服务引用的解决方案
  • 1含有S1,L1,L2,L3的溶液
  • 1含有S2,L1,L2,L3的溶液

所有这一切目前都由一个单一的源代码存储库控制,我在其中应用了一个分支方案,该方案始终使用Main,Development和Release分支。

正如您所看到的,库项目被多次引用,并且正如人们所预料的那样,当多个开发人员在同一个库上工作时,这有时会导致冲突。 正如我之前提到的,实际上我有更多的图书馆项目。现在有一些解决方案包含50多个项目,几乎所有解决方案都包含相同的项目。 为了使它们更易于维护,我想将库项目移动到他们自己的解决方案中并创建它们的NuGet包。

我还有三个部署环境的环境:

  • 每天推送开发分支构建的TST环境
  • 推送Release分支构建的QA环境
  • 推送Main分支构建的LIVE环境

我面临的问题是,我不太清楚如何将NuGet软件包纳入此部署策略,因为在一个sprint过程中所有项目都会进行开发,如果开发人员检出 发布分支或主分支创建一个热门修复程序,我不希望他弄乱引用的NuGet包并意外地将开发包引入主分支。

从构建目的来看,在构建库项目并将每个分支的NuGet包发布到不同的存储库时,可以简单地使用相同的分支策略。 从开发人员的角度来看,我不知道如何在多个存储库之间轻松切换。在结帐不同的项目或分支时,我无法为开发人员打扰修改他们的NuGet存储库URL。

所以问题是:什么是并行积极开发一组库和前端项目的正确方法?

我不认为我想要做的就是那么困难,或者我一个人想要这样做。然而,我没有找到任何相关的文件。我完全错了吗?

1 个答案:

答案 0 :(得分:1)

答案其实很简单。

在我的情况下,最好的解决方案是在NuGet Config File中为每个分支定义不同的包源。

<packageSources>
    <add key="NuGet official package source" value="https://nuget.org/api/v2/" />
    <add key="MyRepo - ES" value="http://MyRepo/ES/nuget" />
</packageSources>

我可以为每个分支创建一个不同的NuGet存储库,为每个分支创建一个不同的NuGet配置文件,只需在该配置文件中定义正确的存储库URL。