Skip to content

[Bug] CommitsSinceVersionSource is counting from latest minor tag or first tag instead of latest tag #3656

@wiruzman

Description

@wiruzman

Describe the bug
I am using commit message increase with Mainline mode. The commit message contains +semver:minor. The minor version increases in the pull request but CommitsSinceVersionSource does not count from latest tag.

Expected Behavior

CommitsSinceVersionSource counts from latest tag.

Actual Behavior

CommitsSinceVersionSource counts from latest minor tag or first ever tag.

Possible Fix

Steps to Reproduce

[Test]
public void Under1PlusMinor()
{
    var configuration = GetMainlineModeConfiguration();
    using var fixture = new EmptyRepositoryFixture();
    fixture.Repository.MakeACommit();
    fixture.Repository.MakeATaggedCommit("0.1.0");
    fixture.Repository.MakeACommit();
    fixture.Repository.MakeACommit();
    fixture.Repository.MakeATaggedCommit("0.1.1");
    Commands.Checkout(fixture.Repository, fixture.Repository.CreateBranch("feature/12345-test"));
    fixture.Repository.MakeACommit("two +semver:minor");
    fixture.Repository.MakeACommit("three");

    fixture.Repository.CreatePullRequestRef("feature/12345-test", MainBranch, normalise: true);

    fixture.Repository.DumpGraph();
    fixture.AssertFullSemver("0.2.0-PullRequest2.3", configuration);
}

private static IGitVersionConfiguration GetMainlineModeConfiguration() => GitHubFlowConfigurationBuilder.New
            .WithBranch(MainBranch, builder => builder.WithVersioningMode(VersioningMode.Mainline))
            .Build();

Context

It does not block me because after the pull request is merged and all patch versions have correct CommitsSinceVersionSource until next minor/major.
Below test shows that after minor version is merged and following patch version have the correct CommitsSinceVersionSource.

[Test]
public void Under1PlusMinorThenPatch()
{
    var configuration = GetMainlineModeConfiguration();
    using var fixture = new EmptyRepositoryFixture();
    fixture.Repository.MakeACommit();
    fixture.Repository.MakeATaggedCommit("0.1.0");
    fixture.Repository.MakeACommit();
    fixture.Repository.MakeACommit();
    fixture.Repository.MakeATaggedCommit("0.1.1");
    var feature12345 = fixture.Repository.CreateBranch("feature/12345-test");
    Commands.Checkout(fixture.Repository, feature12345);
    fixture.Repository.MakeACommit("two +semver:minor");
    fixture.Repository.MakeACommit("three");

    var pullRequestRef1 = fixture.Repository.CreatePullRequestRef("feature/12345-test", MainBranch, normalise: true);
    Commands.Checkout(fixture.Repository, MainBranch);
    var merge = fixture.Repository.Merge(pullRequestRef1, Generate.SignatureNow(), new MergeOptions(){CommitOnSuccess = true});
    fixture.Repository.Tags.Add("0.2.0", merge.Commit);
    
    var feature54321 = fixture.Repository.CreateBranch("feature/54321-test");
    Commands.Checkout(fixture.Repository, feature54321);
    fixture.Repository.MakeACommit("four");
    
    fixture.Repository.CreatePullRequestRef("feature/54321-test", MainBranch, normalise: true, prNumber: 3);

    fixture.Repository.DumpGraph();
    fixture.AssertFullSemver("0.2.1-PullRequest3.2", configuration);
}

private static IGitVersionConfiguration GetMainlineModeConfiguration() => GitHubFlowConfigurationBuilder.New
            .WithBranch(MainBranch, builder => builder.WithVersioningMode(VersioningMode.Mainline))
            .Build();

Your Environment

Azure DevOps but also locally.

  • Version Used: 6.0.0-beta.3
  • Operating System and version (Windows 10, Ubuntu 18.04): Windows 11, Ubuntu 22.04
  • Link to your project:
  • Link to your CI build (if appropriate):

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions