Вы можете прочитать полностью json, использовать Major, Minor и Patch номера версии и обновить в зависимости от того, что вас интересует ... patch, minor или major.
Я использую foreach-object
для доступа ко всем свойствам json, хотя доступен только один. 1-вкладыш :
gitversion | ConvertFrom-Json | % { "$($_.Major).$($_.Minor + 1).$($_.Patch)" } | % { git tag $_ }
Как% / ForEach-Object может работать с несколькими хранилищами
Если на пути, по которому вы запускаете gitversion, есть только один репозиторий, он всегда даст вам один объект. (gitversion терпит неудачу с ошибками, когда вы запускаете это в каталоге, в котором нет репозитория git.)
Я хотел бы подчеркнуть, что это будет прекрасно работать в вашем сценарии, где есть только Версия Major, Minor и Patch. В случаях, когда SemVersion имеет значение "SemVer":"0.1.0"
, это нормально. Но если вы заинтересованы в том, чтобы сохранить PreReleaseTag и в следующей версии (и не удалять теги alpha / beta et c), вы также можете включить PreReleaseTagWithDa sh в свой вывод. например, теги предварительной версии: "SemVer":"0.1.0-alpha.915"
gitversion | ConvertFrom-Json | % { "$($_.Major).$($_.Minor + 1).$($_.Patch)$($_.PreReleaseTagWithDash)" } | % { git tag $_ }
Примеры JSON-файлов gitversion
- В 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"
}
- От основной ветки обычно можно ожидать 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 хранилищами в одном месте. Это решение будет работать, если на пути, по которому вы работаете, есть только хранилище.