【问题标题】:Versioning strategy for Feature branch in nugetnuget中功能分支的版本控制策略
【发布时间】:2017-06-25 19:15:35
【问题描述】:

我们正在构建一个包含多个存储库的系统。其中一些是常见的。该解决方案使用 .net 技术、nuget 和 jenkin 服务器构建。

我们计划引入版本控制。所有二进制文件都应具有 Major.Minor.Patch.Build 等产品版本。

我们将在我们的 CI 服务器上拥有一个专用的 Nuget 服务器,我们将在其中为常见项目发布我们的内部包。同样,我们将在开发者的本地机器上创建一个 nuget 服务器。

这是问题场景:

支持一位开发人员正在开发一个长期运行的功能分支。而这个特性需要跨多个分支(包括一个公共分支)进行更改。开发人员将为两个存储库创建功能分支并开始处理它们。

由于我们将有一项工作来构建功能分支(每当在 CI 服务器上完成任何提交或提出拉取请求时),CI 服务器将在集中式 nuget 服务器上为公共存储库创建一个 nuget 包。

如果生成的 nuget 包版本相同(与上一个版本相同),它将替换现有包。

所以版本应该不同。我们可以增加以前版本的任何部分,例如构建部分,或者我们可以在版本号的末尾附加 -featureName。应该首选哪一个?

如果我们在开发机器上也做这两件事中的任何一个,开发人员每次在分支之间切换时都必须更改包引​​用。因此,理想情况下,在开发机器上生成的包应该替换以前的包。但同样在这种情况下,开发人员在分支之间切换,他必须确保构建适当的通用包。

请针对这种情况提出任何标准解决方案。

提前致谢

【问题讨论】:

    标签: .net git nuget nuget-package


    【解决方案1】:

    我们采用了一个非常简单的解决方案 - 对于较大的团队,这可能会有一些我不知道的限制,但这适用于我们的小团队。

    将 .nuspec 文件中的版本更改为具有分支名称。例如:

    • 1.0.60-enumfix 这是在 enumfix 分支上
    • 1.0.61-enumfix
    • 1.0.59-新功能
    • 1.0.60-dev 这是我们的开发分支
    • 1.0.60(这是我们的主人)
    • 2.3.80-whocares

    你明白了

    在 nuget 数据包管理器中安装软件包时,请选中“允许预发布” 如果需要,删除或取消列出 nuget 预发布分支版本。

    【讨论】:

      【解决方案2】:

      您可以查看“GitVersion”(https://gitversion.readthedocs.io/en/latest/),它可以帮助您根据 git 提交拓扑和分支名称轻松生成具有不同版本的每个新包。

      每次推送都会构建一个不同名称的包。

      特别是现在 nuget 支持 SemVer V2 的最新版本(如果需要更新)。

      也许您还应该看看“主干基础编程”和功能切换以使用更少的分支,这将简化您的开发。

      也许还可以看看 'monorepo' 也有帮助。

      【讨论】:

      • 感谢菲利普您的回复!如果满足我的需要,我将查看此链接并将其标记为正确。
      猜你喜欢
      • 1970-01-01
      • 2019-04-07
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 2020-06-28
      • 1970-01-01
      • 2014-12-09
      相关资源
      最近更新 更多