您可以阅读整个 json,使用版本的主要、次要和补丁编号,然后更新您感兴趣的任何一个...补丁、次要或主要。
我正在使用foreach-object 访问 json 的所有属性,即使只有一个可用。 1-liner:
gitversion | ConvertFrom-Json | % { "$($_.Major).$($_.Minor + 1).$($_.Patch)" } | % { git tag $_ }
% / ForEach-Object 如何与多个存储库一起工作
如果您运行 gitversion 的路径中只有一个存储库,它将始终为您提供一个对象。 (当您在没有 git 存储库的目录中运行时,gitversion 失败并出现错误。)
我想强调的是,这在您只有主要、次要和补丁版本的情况下非常有用。在 SemVersion 类似于"SemVer":"0.1.0" 的情况下,这很好。但是,如果您的兴趣是在下一个版本中保留 PreReleaseTag(而不是删除 alpha / beta 等标签),您也可以将 PreReleaseTagWithDash 包含到您的输出中。例如预发布标签:"SemVer":"0.1.0-alpha.915"
gitversion | ConvertFrom-Json | % { "$($_.Major).$($_.Minor + 1).$($_.Patch)$($_.PreReleaseTagWithDash)" } | % { git tag $_ }
gitversion 的 JSON 示例
- 从 dev 或其他分支中,您可以预期 semVer 中包含预发布标签的变体。
{
"Major":0,
"Minor":1,
"Patch":0,
"PreReleaseTag":"alpha.915",
"PreReleaseTagWithDash":"-alpha.915",
"PreReleaseLabel":"alpha",
"PreReleaseNumber":915,
"WeightedPreReleaseNumber":915,
"BuildMetaData":"",
"BuildMetaDataPadded":"",
"FullBuildMetaData":"Branch.dev.Sha.888xxx.xxx888",
"MajorMinorPatch":"0.1.0",
"SemVer":"0.1.0-alpha.915",
"LegacySemVer":"0.1.0-alpha915",
"LegacySemVerPadded":"0.1.0-alpha0915",
"AssemblySemVer":"0.1.0.0",
"AssemblySemFileVer":"0.1.0.0",
"FullSemVer":"0.1.0-alpha.915",
"InformationalVersion":"0.1.0-alpha.915+Branch.dev.Sha.888xx.xx888",
"BranchName":"dev",
"Sha":"888xx.xx888",
"ShortSha":"7a1152f",
"NuGetVersionV2":"0.1.0-alpha0915",
"NuGetVersion":"0.1.0-alpha0915",
"NuGetPreReleaseTagV2":"alpha0915",
"NuGetPreReleaseTag":"alpha0915",
"VersionSourceSha":"88xxx.xx88",
"CommitsSinceVersionSource":915,
"CommitsSinceVersionSourcePadded":"0915",
"CommitDate":"2019-12-06"
}
- 从 master 分支,您通常会期望 semver = major.minor.patch。
{
"Major":0,
"Minor":1,
"Patch":0,
"PreReleaseTag":"",
"PreReleaseTagWithDash":"",
"PreReleaseLabel":"",
"PreReleaseNumber":"",
"WeightedPreReleaseNumber":"",
"BuildMetaData":0,
"BuildMetaDataPadded":"0000",
"FullBuildMetaData":"0.Branch.master.Sha.9999xxx....xxx999",
"MajorMinorPatch":"0.1.0",
"SemVer":"0.1.0",
"LegacySemVer":"0.1.0",
"LegacySemVerPadded":"0.1.0",
"AssemblySemVer":"0.1.0.0",
"AssemblySemFileVer":"0.1.0.0",
"FullSemVer":"0.1.0+0",
"InformationalVersion":"0.1.0+0.Branch.master.Sha.999xxx...xxx999",
"BranchName":"master",
"Sha":"86b0be929a84ba7e9b2a463e7dbdc9a3c9325dc1",
"ShortSha":"86b0be9",
"NuGetVersionV2":"0.1.0",
"NuGetVersion":"0.1.0",
"NuGetPreReleaseTagV2":"",
"NuGetPreReleaseTag":"",
"VersionSourceSha":"999xxx...xxx999",
"CommitsSinceVersionSource":0,
"CommitsSinceVersionSourcePadded":"0000",
"CommitDate":"2018-02-18"
}
注意:我没有在一个位置使用多个 git 存储库对此进行测试。如果您正在运行的路径中只有存储库,则此解决方案将起作用。