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);
        }
    }
Ejemplo n.º 2
0
    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
            });
        }
    }
Ejemplo n.º 3
0
    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);
        }
    }