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); }