GitVersion - 选择性版本化同一项目的多个程序集

时间:2016-08-22 20:33:32

标签: semantic-versioning gitversion

我正在使用由多个类库项目的解决方案组成的.net c#项目。

源控件由git使用gitflow作为分支模型进行管理。 我们已经决定要实施项目的语义版本控制http://semver.org/),以便按照标准方式来传达我们的版本。 为此,我们使用 GitVersionTask(通过NuGet),它与gitflow非常兼容。

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

我想分享一个似乎可行的解决方法:

  1. GitVersion使用$(Build.SourcesDirectory)查看源的位置-src
  2. 我们可以使用logging commands*

  3. 进行更改
  4. 解决方法是在GitVersion任务之前设置Build.SourcesDirectory

  5. 然后gitVersion使用项目文件夹(Build.SourceDirectory)中的GitVersion.yml和voila-可以使用

之后,您可能需要回滚更改,也可以不回滚更改-取决于您的需要。对我来说,将nugetPackages monorepo中的nuget包集中到唯一的nuget包似乎很不错。

请参见GitVersion issuecomment

*示例Powershell命令: standard PowerShell task; set to inline script; Write-Host "##vso[task.setvariable variable=Build_SourcesDirectory;]$(Build.SourcesDirectory)\$(NugetProjectName)"

答案 1 :(得分:0)

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