2

我在一个由具有多个类库项目的解决方案组成的 .net c# 项目中。

源代码控制由 git 使用 gitflow 作为分支模型进行管理。我们决定要实现项目的语义版本控制( http://semver.org/ ),以便遵循标准方式来传达我们的版本。为此,我们正在使用GitVersionTask(通过 NuGet),它与 gitflow 配合得非常好。

每次我们标记一个版本并从主分支执行构建时,所有程序集的版本都会更新,并且新版本即将交付。只有其中一个程序集具有公共 API,其他所有程序集供内部使用。我想知道这是否是管理同一项目的多个程序集版本的正确方法我的意思是,当只更改几个(甚至一个)时更改每个程序集的版本是不是错误的?为了让想法更复杂,一些“内部”程序集很可能会被其他项目使用,所以我认为增加一个没有遭受更改的程序集的主要版本只是因为另一个程序集同一个项目正在推动重大变革。每个组装项目都应该在自己的存储库中管理吗?

提前致谢。

4

2 回答 2

1

我知道这是一个老问题,仍然:

我想分享一个似乎有效的解决方法:

  1. GitVersion 使用 $(Build.SourcesDirectory) 查看源的位置 - src
  2. 我们可以使用记录命令来改变它*

  3. 解决方法是在 GitVersion 任务之前设置 Build.SourcesDirectory

  4. 然后 gitVersion 使用项目文件夹(Build.SourceDirectory)中的 GitVersion.yml 并且瞧 - 工作

之后,您可能想要回滚或不回滚更改 - 取决于您的需要。对我来说,从我们的 nugetPackages monorepo 中的 nuget 包集合中缩小到唯一的 nuget 包似乎很好。

请参阅GitVersion 问题评论

*示例 Powershell 命令: 标准 PowerShell 任务;设置为内联脚本;写入主机“##vso[task.setvariable variable=Build_SourcesDirectory;]$(Build.SourcesDirectory)\$(NugetProjectName)”

于 2018-10-05T11:48:17.217 回答
0

GitVersion 中肯定没有任何东西可以帮助在同一个存储库中拥有单独的项目。我们将在此处提供的指导是,您应该为应用程序的不同部分使用不同的存储库。这样他们就可以按照自己的节奏进行版本控制/更新。

于 2016-08-23T07:26:17.270 回答