New tag without version drop semver to zeros
Describe the Bug
Tag without version drop semver to zeros
Steps to Reproduce
run powershell with net7.0 dotnet cli
dotnet new globaljson --sdk-version=7.0.401 --force
mkdir testproject
cd testproject
dotnet new console
git init
wget -O .gitignore https://raw.githubusercontent.com/github/gitignore/main/VisualStudio.gitignore
((Get-Content -path testproject.csproj -Raw) -replace '</Project>','') | Set-Content -Path testproject.csproj
Add-Content -Path testproject.csproj -Value ' <ItemGroup>'
Add-Content -Path testproject.csproj -Value ' <PackageReference Include="GitInfo" Version="3.3.3">'
Add-Content -Path testproject.csproj -Value ' <PrivateAssets>all</PrivateAssets>'
Add-Content -Path testproject.csproj -Value ' <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>'
Add-Content -Path testproject.csproj -Value ' </PackageReference>'
Add-Content -Path testproject.csproj -Value ' </ItemGroup>'
Add-Content -Path testproject.csproj -Value '</Project>'
dotnet restore
git add *
git commit -m "init"
git tag -a v0.1 -m "init"
dotnet run
cat ./obj/Debug/net7.0/testproject.AssemblyInfo.cs
output contains
[assembly: System.Reflection.AssemblyVersionAttribute("0.1.0.0")]
Add-Content -Path testproject.csproj -Value ' '
git add *
git commit -m "init 2"
git tag -a error -m "version reset"
dotnet run
cat ./obj/Debug/net7.0/testproject.AssemblyInfo.cs
output contains
[assembly: System.Reflection.AssemblyVersionAttribute("0.0.2.0")]
but must get read first right tag with version from commits below
Expected Behavior
[assembly: System.Reflection.AssemblyVersionAttribute("0.1.2.0")]
Version Info
GitInfo 3.3.3
Please consider sponsoring to help prioritize issues 🙏.
As documented in the targets and readme:
$(GitTagRegex): regular expression used with git describe to filter the tags to consider for base version lookup. Defaults to * (all).
You could default it to $(GitBaseVersionRegex) via a Directory.Build.targets or use its value (or a simplified version):
<GitBaseVersionRegex Condition="'$(GitBaseVersionRegex)' == ''">v?(?<MAJOR>\d+)\.(?<MINOR>\d+)(?:\-(?<LABEL>[\dA-Za-z\-\.]+))?$|^v?(?<MAJOR>\d+)\.(?<MINOR>\d+)\.(?<PATCH>\d+)(?:\-(?<LABEL>[\dA-Za-z\-\.]+))?$|^(?<LABEL>[\dA-Za-z\-\.]+)\-v?(?<MAJOR>\d+)\.(?<MINOR>\d+)\.(?<PATCH>\d+)$</GitBaseVersionRegex>
For example:
<PropertyGroup>
<GitTagRegex>v?\d+\.\d+\.\d?</GitTagRegex>
</PropertyGroup>
In this case, the targets would run git describe --tags --match=v?\d+\.\d+\.\d? --abbrev=0
