gpt4 book ai didi

Powershell:如何拆分、计算和格式化

转载 作者:行者123 更新时间:2023-12-04 16:37:02 24 4
gpt4 key购买 nike

我正在寻找看起来像这样的 1-liner:

(gitversion | ConvertFrom-Json).SemVer.split('.') | [string]::Format("{0}.{1}.{2}",$_[0],$_[1] + 1,$_[2]) | git tag $_

所以,现在我有 0.1.0 并且我想要一个将它映射到的 1 衬里:0.2.0

我相信 PS 大师可以快速解决这个问题

最佳答案

您可以阅读整个 json,使用版本的主要、次要和补丁号并更新您感兴趣的任何一个......补丁、次要或主要。

我正在使用 foreach-object 访问 json 的所有属性,即使只有一个可用。 1-liner:

gitversion | ConvertFrom-Json | % { "$($_.Major).$($_.Minor + 1).$($_.Patch)" } | % { git tag $_ }

How can % / ForEach-Object work with multiple repositories

如果在你运行 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

  • 在开发或其他分支中,您可以期待包含预发布标签的 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 存储库对此进行测试。如果您正在运行的路径上只有存储库,则此解决方案将起作用。

关于Powershell:如何拆分、计算和格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60241494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com