Example #1
0
    public static ReleaseDate Execute(IRepository repo, string commitSha, int calculatedPatch)
    {
        var c = repo.Lookup <Commit>(commitSha);

        Debug.Assert(c != null);

        var rd = new ReleaseDate
        {
            OriginalDate      = c.When(),
            OriginalCommitSha = c.Sha,
            Date      = c.When(),
            CommitSha = c.Sha,
        };

        if (GitVersionFinder.ShouldGitHubFlowVersioningSchemeApply(repo))
        {
            return(rd);
        }

        if (calculatedPatch == 0)
        {
            return(rd);
        }

        var vp           = new VersionOnMasterFinder().FindLatestStableTaggedCommitReachableFrom(repo, c);
        var latestStable = repo.Lookup <Commit>(vp.CommitSha);

        Debug.Assert(latestStable != null);

        rd.OriginalDate      = latestStable.When();
        rd.OriginalCommitSha = vp.CommitSha;
        return(rd);
    }
    public void Should_find_previous_commit_that_was_at_least_a_minor_bump()
    {
        var finder = new VersionOnMasterFinder();

        var dateTime  = new DateTimeOffset(2000, 10, 10, 0, 0, 0, new TimeSpan(0));
        var signature = 2.Seconds().Before(dateTime).ToSignature();

        const string sha = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef";

        var version = finder.Execute(new GitVersionContext
        {
            Repository = new MockRepository
            {
                Branches = new MockBranchCollection
                {
                    new MockBranch("master")
                    {
                        new MockMergeCommit(new ObjectId(sha))
                        {
                            MessageEx   = "Merge branch 'hotfix-0.3.0'",
                            CommitterEx = signature
                        },
                        new MockMergeCommit
                        {
                            MessageEx   = "Merge branch 'hotfix-0.3.1'",
                            CommitterEx = signature,
                        },
                        new MockMergeCommit
                        {
                            MessageEx   = "Merge branch 'hotfix-0.2.0'",
                            CommitterEx = signature
                        },
                    },
                }
            }
        }, 1.Seconds().Ago());

        ObjectApprover.VerifyWithJson(version);
    }