BaseVersion CreateBaseVersion(GitVersionContext context, VersionTaggedCommit version) { var shouldUpdateVersion = version.Commit.Sha != context.CurrentCommit.Sha; var baseVersion = new BaseVersion(context, FormatSource(version), shouldUpdateVersion, version.SemVer, version.Commit, null); return(baseVersion); }
public BaseVersion GetBaseVersion(GitVersionContext context) { using (Logger.IndentLog("Calculating base versions")) { var baseVersions = strategies .SelectMany(s => s.GetVersions(context)) .Where(v => { if (v != null) { Logger.WriteInfo(v.ToString()); return true; } return false; }) .Select(v => new { IncrementedVersion = MaybeIncrement(context, v), Version = v }) .ToList(); var maxVersion = baseVersions.Aggregate((v1, v2) => v1.IncrementedVersion > v2.IncrementedVersion ? v1 : v2); var matchingVersionsOnceIncremented = baseVersions .Where(b => b != maxVersion && b.Version.BaseVersionSource != null && b.IncrementedVersion == maxVersion.IncrementedVersion) .ToList(); BaseVersion baseVersionWithOldestSource; if (matchingVersionsOnceIncremented.Any()) { baseVersionWithOldestSource = matchingVersionsOnceIncremented.Aggregate((v1, v2) => v1.Version.BaseVersionSource.Committer.When < v2.Version.BaseVersionSource.Committer.When ? v1 : v2).Version; Logger.WriteInfo(string.Format( "Found multiple base versions which will produce the same SemVer ({0}), taking oldest source for commit counting ({1})", maxVersion.IncrementedVersion, baseVersionWithOldestSource.Source)); } else { baseVersionWithOldestSource = baseVersions .Where(v => v.Version.BaseVersionSource != null) .OrderByDescending(v => v.IncrementedVersion) .ThenByDescending(v => v.Version.BaseVersionSource.Committer.When) .First() .Version; } if (baseVersionWithOldestSource.BaseVersionSource == null) throw new Exception("Base version should not be null"); var calculatedBase = new BaseVersion( maxVersion.Version.Source, maxVersion.Version.ShouldIncrement, maxVersion.Version.SemanticVersion, baseVersionWithOldestSource.BaseVersionSource, maxVersion.Version.BranchNameOverride); Logger.WriteInfo(string.Format("Base version used: {0}", calculatedBase)); return calculatedBase; } }
public void ExcludeShouldAcceptVersionWithNullCommit() { var version = new BaseVersion("dummy", false, new SemanticVersion(1), null, string.Empty); var sut = new ShaVersionFilter(new[] { "mismatched" }); string reason; sut.Exclude(version, out reason).ShouldBeFalse(); reason.ShouldBeNull(); }
public void WhenShaMismatchShouldNotExclude() { var commit = new MockCommit(); var version = new BaseVersion("dummy", false, new SemanticVersion(1), commit, string.Empty); var sut = new ShaVersionFilter(new[] { "mismatched" }); string reason; sut.Exclude(version, out reason).ShouldBeFalse(); reason.ShouldBeNull(); }
public void WhenShaMatchShouldExcludeWithReason() { var commit = new MockCommit(); var version = new BaseVersion("dummy", false, new SemanticVersion(1), commit, string.Empty); var sut = new ShaVersionFilter(new[] { commit.Sha }); string reason; sut.Exclude(version, out reason).ShouldBeTrue(); reason.ShouldNotBeNullOrWhiteSpace(); }
public void ExcludeShouldAcceptVersionWithNullCommit() { var version = new BaseVersion("dummy", false, new SemanticVersion(1), null, string.Empty); var futureDate = DateTimeOffset.UtcNow.AddYears(1); var sut = new MinDateVersionFilter(futureDate); string reason; sut.Exclude(version, out reason).ShouldBeFalse(); reason.ShouldBeNull(); }
static SemanticVersion MaybeIncrement(GitVersionContext context, BaseVersion version) { var increment = IncrementStrategyFinder.DetermineIncrementedField(context, version); if (increment != null) { return version.SemanticVersion.IncrementVersion(increment.Value); } return version.SemanticVersion; }
public void WhenShaMismatchShouldNotExclude() { var commit = new MockCommit(); //when = UtcNow var version = new BaseVersion("dummy", false, new SemanticVersion(1), commit, string.Empty); var pastDate = DateTimeOffset.UtcNow.AddYears(-1); var sut = new MinDateVersionFilter(pastDate); string reason; sut.Exclude(version, out reason).ShouldBeFalse(); reason.ShouldBeNull(); }
public void WhenCommitShouldExcludeWithReason() { var commit = new MockCommit(); //when = UtcNow var version = new BaseVersion("dummy", false, new SemanticVersion(1), commit, string.Empty); var futureDate = DateTimeOffset.UtcNow.AddYears(1); var sut = new MinDateVersionFilter(futureDate); string reason; sut.Exclude(version, out reason).ShouldBeTrue(); reason.ShouldNotBeNullOrWhiteSpace(); }
public bool Exclude(BaseVersion version, out string reason) { if (version == null) throw new ArgumentNullException("version"); reason = null; if (version.BaseVersionSource != null && shas.Any(sha => version.BaseVersionSource.Sha.StartsWith(sha, StringComparison.OrdinalIgnoreCase))) { reason = "Source was ignored due to commit having been excluded by configuration"; return true; } return false; }
public bool Exclude(BaseVersion version, out string reason) { if (version == null) throw new ArgumentNullException("version"); reason = null; if (version.BaseVersionSource != null && version.BaseVersionSource.When() < minimum) { reason = "Source was ignored due to commit date being outside of configured range"; return true; } return false; }
public void ShouldNotFilterVersion() { var fakeIgnoreConfig = new TestIgnoreConfig(new ExcludeSourcesContainingExclude()); var context = new GitVersionContextBuilder().WithConfig(new Config() { Ignore = fakeIgnoreConfig }).Build(); var version = new BaseVersion("dummy", false, new SemanticVersion(2), new MockCommit(), null); var sut = new BaseVersionCalculator(new TestVersionStrategy(version)); var baseVersion = sut.GetBaseVersion(context); baseVersion.Source.ShouldBe(version.Source); baseVersion.ShouldIncrement.ShouldBe(version.ShouldIncrement); baseVersion.SemanticVersion.ShouldBe(version.SemanticVersion); }
public bool Exclude(BaseVersion version, out string reason) { reason = null; if (version.Source.Contains("exclude")) { reason = "was excluded"; return true; } return false; }
BaseVersion CreateBaseVersion(GitVersionContext context, VersionTaggedCommit version) { var shouldUpdateVersion = version.Commit.Sha != context.CurrentCommit.Sha; var baseVersion = new BaseVersion(FormatSource(version), shouldUpdateVersion, version.SemVer, version.Commit, null); return baseVersion; }
static SemanticVersion MaybeIncrement(GitVersionContext context, BaseVersion version) { return version.ShouldIncrement ? version.SemanticVersion.IncrementVersion(context.Configuration.Increment) : version.SemanticVersion; }