public void WhenSupportIsBranchedAndTaggedFromAnotherSupportEnsureNewMinorIsUsed() { using (var fixture = new EmptyRepositoryFixture()) { fixture.Repository.MakeACommit(); fixture.Repository.CreateBranch("Support-1.2.0"); fixture.Repository.Checkout("Support-1.2.0"); fixture.Repository.MakeACommit(); fixture.Repository.ApplyTag("1.2.0"); fixture.Repository.CreateBranch("Support-1.3.0"); fixture.Repository.Checkout("Support-1.3.0"); var stamp = new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero); var commit = fixture.Repository.MakeACommit(stamp); fixture.Repository.ApplyTag("1.3.0", commit.Sha); //Move On fixture.Repository.MakeACommit(); fixture.Repository.MakeACommit(); var dateTimeOffset = LastMinorVersionFinder.Execute(fixture.Repository, fixture.Repository.Head.Tip); Assert.AreEqual(stamp, dateTimeOffset); } }
public static CachedVersion GetVersion(string gitDirectory) { using (var repo = RepositoryLoader.GetRepo(gitDirectory)) { var ticks = DirectoryDateFinder.GetLastDirectoryWrite(gitDirectory); var key = string.Format("{0}:{1}:{2}", repo.Head.CanonicalName, repo.Head.Tip.Sha, ticks); CachedVersion cachedVersion; if (versionCacheVersions.TryGetValue(key, out cachedVersion)) { if (cachedVersion.Timestamp != ticks) { Logger.WriteInfo("Change detected. flushing cache."); cachedVersion.SemanticVersion = GitVersionFinder.GetSemanticVersion(repo); cachedVersion.MasterReleaseDate = LastMinorVersionFinder.Execute(repo, repo.Head.Tip); } return(cachedVersion); } Logger.WriteInfo("Version not in cache. Calculating version."); //TODO: cope with githubflow //if (GitVersionFinder.ShouldGitHubFlowVersioningSchemeApply(repo)) //{ // return rd; //} return(versionCacheVersions[key] = new CachedVersion { SemanticVersion = GitVersionFinder.GetSemanticVersion(repo), MasterReleaseDate = LastMinorVersionFinder.Execute(repo, repo.Head.Tip), Timestamp = ticks }); } }
public static CachedVersion GetVersion(string gitDirectory, Config configuration) { using (var repo = RepositoryLoader.GetRepo(gitDirectory)) { var versionFinder = new GitVersionFinder(); var context = new GitVersionContext(repo, configuration); var ticks = DirectoryDateFinder.GetLastDirectoryWrite(gitDirectory); var key = string.Format("{0}:{1}:{2}", repo.Head.CanonicalName, repo.Head.Tip.Sha, ticks); CachedVersion cachedVersion; if (versionCacheVersions.TryGetValue(key, out cachedVersion)) { if (cachedVersion.Timestamp != ticks) { Logger.WriteInfo("Change detected. flushing cache."); cachedVersion.SemanticVersion = versionFinder.FindVersion(context); cachedVersion.MasterReleaseDate = LastMinorVersionFinder.Execute(repo, new Config(), repo.Head.Tip); } return(cachedVersion); } Logger.WriteInfo("Version not in cache. Calculating version."); return(versionCacheVersions[key] = new CachedVersion { SemanticVersion = versionFinder.FindVersion(context), MasterReleaseDate = LastMinorVersionFinder.Execute(repo, new Config(), repo.Head.Tip), Timestamp = ticks }); } }
static void EnsureMetaDataMatch(CommitCountingRepoFixture fixture, string branchName, Func <IRepository, Commit> commitFinder = null) { var referenceCommitFinder = commitFinder ?? (r => r.FindBranch(branchName).Tip); var commit = referenceCommitFinder(fixture.Repository); var releaseDate = LastMinorVersionFinder.Execute(fixture.Repository, commit); releaseDate.ShouldBe(commit.When()); }
public void WhenNoTagsOrMergeCommitsShouldUseFirstCommit() { using (var fixture = new EmptyRepositoryFixture()) { var stamp = new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero); fixture.Repository.MakeACommit(stamp); var dateTimeOffset = LastMinorVersionFinder.Execute(fixture.Repository, fixture.Repository.Head.Tip); Assert.AreEqual(stamp, dateTimeOffset); } }
public void Should_ignore_invalid_tag() { using (var fixture = new EmptyRepositoryFixture(new Config())) { var commit1 = fixture.Repository.MakeACommit(new DateTimeOffset(2001, 1, 1, 1, 1, 1, TimeSpan.Zero)); fixture.Repository.Tags.Add("1.1.0", commit1); var commit2 = fixture.Repository.MakeACommit(new DateTimeOffset(2002, 1, 1, 1, 1, 1, TimeSpan.Zero)); fixture.Repository.Tags.Add("BadTag", commit2); var dateTimeOffset = LastMinorVersionFinder.Execute(fixture.Repository, new Config(), fixture.Repository.Head.Tip); Assert.AreEqual(2001, dateTimeOffset.Year); } }
public void WhenSupportIsBranchedFromMasterEnsureLastMinorTagIsUsed() { using (var fixture = new EmptyRepositoryFixture()) { var stamp = new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero); fixture.Repository.MakeACommit(stamp); fixture.Repository.ApplyTag("1.2.0"); fixture.Repository.CreateBranch("Support-1.2.0"); fixture.Repository.Checkout("Support-1.2.0"); fixture.Repository.MakeACommit(); var dateTimeOffset = LastMinorVersionFinder.Execute(fixture.Repository, fixture.Repository.Head.Tip); Assert.AreEqual(stamp, dateTimeOffset); } }
public void WhenMasterHasPatchTagEnsureLastMinorTagIsUsed() { using (var fixture = new EmptyRepositoryFixture()) { var stamp = new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero); fixture.Repository.MakeACommit(stamp); fixture.Repository.ApplyTag("1.2.0"); fixture.Repository.MakeACommit(stamp); fixture.Repository.ApplyTag("1.2.1"); fixture.Repository.MakeACommit(); var dateTimeOffset = LastMinorVersionFinder.Execute(fixture.Repository, fixture.Repository.Head.Tip); Assert.AreEqual(stamp, dateTimeOffset); } }