private VersionField FindMessageIncrement(ICommit mergeCommit, ICommit mergedHead, ICommit findMergeBase, List<ICommit> commitLog) { var commits = repositoryStore.GetMergeBaseCommits(mergeCommit, mergedHead, findMergeBase); commitLog.RemoveAll(c => commits.Any(c1 => c1.Sha == c.Sha)); return IncrementStrategyFinder.GetIncrementForCommits(context, commits) ?? TryFindIncrementFromMergeMessage(mergeCommit); }
private static VersionField FindMessageIncrement( GitVersionContext context, Commit mergeCommit, Commit mergedHead, Commit findMergeBase, List <Commit> commitLog) { var commits = context.Repository.GetMergeBaseCommits(mergeCommit, mergedHead, findMergeBase); commitLog.RemoveAll(c => commits.Any(c1 => c1.Sha == c.Sha)); return(IncrementStrategyFinder.GetIncrementForCommits(context, commits) ?? TryFindIncrementFromMergeMessage(mergeCommit, context)); }
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); }
private SemanticVersion IncrementForEachCommit(IEnumerable <ICommit> directCommits, SemanticVersion mainlineVersion, IBranch mainline) { foreach (var directCommit in directCommits) { var directCommitIncrement = IncrementStrategyFinder.GetIncrementForCommits(context, new[] { directCommit }) ?? FindDefaultIncrementForBranch(context, mainline.Name.Friendly); mainlineVersion = mainlineVersion.IncrementVersion(directCommitIncrement); log.Info($"Direct commit on master {directCommit} incremented base versions {directCommitIncrement}, now {mainlineVersion}"); } return(mainlineVersion); }
private static SemanticVersion IncrementForEachCommit(GitVersionContext context, List <Commit> directCommits, SemanticVersion mainlineVersion, Branch mainline) { foreach (var directCommit in directCommits) { var directCommitIncrement = IncrementStrategyFinder.GetIncrementForCommits(context, new[] { directCommit }) ?? IncrementStrategyFinder.FindDefaultIncrementForBranch(context, mainline.FriendlyName); mainlineVersion = mainlineVersion.IncrementVersion(directCommitIncrement); Logger.WriteInfo($"Direct commit on master {directCommit.Sha} incremented base versions {directCommitIncrement}, now {mainlineVersion}"); } return(mainlineVersion); }
private static VersionField FindMessageIncrement( GitVersionContext context, Commit mergeCommit, Commit mergedHead, Commit findMergeBase, List <Commit> commitLog) { var filter = new CommitFilter { IncludeReachableFrom = mergedHead, ExcludeReachableFrom = findMergeBase }; var commits = new[] { mergeCommit }.Union(context.Repository.Commits.QueryBy(filter)).ToList(); commitLog.RemoveAll(c => commits.Any(c1 => c1.Sha == c.Sha)); return(IncrementStrategyFinder.GetIncrementForCommits(context, commits) ?? VersionField.Patch); }
private static SemanticVersion IncrementForEachCommit(GitVersionContext context, List <Commit> directCommits, SemanticVersion mainlineVersion, string branch = null) { foreach (var directCommit in directCommits) { var directCommitIncrement = IncrementStrategyFinder.GetIncrementForCommits(context, new[] { directCommit }) ?? IncrementStrategyFinder.FindDefaultIncrementForBranch(context, branch); mainlineVersion = mainlineVersion.IncrementVersion(directCommitIncrement); Logger.WriteInfo(string.Format("Direct commit on master {0} incremented base versions {1}, now {2}", directCommit.Sha, directCommitIncrement, mainlineVersion)); } return(mainlineVersion); }
private SemanticVersion PerformIncrement(GitVersionContext context, BaseVersion baseVersion) { var semver = baseVersion.SemanticVersion; var increment = IncrementStrategyFinder.DetermineIncrementedField(context, baseVersion); if (increment != null) { semver = semver.IncrementVersion(increment.Value); } else { log.Info("Skipping version increment"); } return(semver); }
public SemanticVersion FindVersion(GitVersionContext context) { SemanticVersion taggedSemanticVersion = null; // If current commit is tagged, don't do anything except add build metadata if (context.IsCurrentCommitTagged) { // Will always be 0, don't bother with the +0 on tags var semanticVersionBuildMetaData = metaDataCalculator.Create(context.CurrentCommit, context); semanticVersionBuildMetaData.CommitsSinceTag = null; var semanticVersion = new SemanticVersion(context.CurrentCommitTaggedVersion) { BuildMetaData = semanticVersionBuildMetaData }; taggedSemanticVersion = semanticVersion; } var baseVersion = baseVersionFinder.GetBaseVersion(context); var semver = baseVersion.SemanticVersion; var increment = IncrementStrategyFinder.DetermineIncrementedField(context, baseVersion); if (increment != null) { semver = semver.IncrementVersion(increment.Value); } else { Logger.WriteInfo("Skipping version increment"); } if (!semver.PreReleaseTag.HasTag() && !string.IsNullOrEmpty(context.Configuration.Tag)) { UpdatePreReleaseTag(context, semver, baseVersion.BranchNameOverride); } semver.BuildMetaData = metaDataCalculator.Create(baseVersion.BaseVersionSource, context); if (taggedSemanticVersion != null) { // set the commit count on the tagged ver taggedSemanticVersion.BuildMetaData.CommitsSinceVersionSource = semver.BuildMetaData.CommitsSinceVersionSource; } return(taggedSemanticVersion ?? semver); }
private VersionField TryFindIncrementFromMergeMessage(Commit mergeCommit) { if (mergeCommit != null) { var mergeMessage = new MergeMessage(mergeCommit.Message, context.FullConfiguration); if (mergeMessage.MergedBranch != null) { var config = context.FullConfiguration.GetConfigForBranch(mergeMessage.MergedBranch); if (config?.Increment != null && config.Increment != IncrementStrategy.Inherit) { return(config.Increment.Value.ToVersionField()); } } } // Fallback to config increment value return(IncrementStrategyFinder.FindDefaultIncrementForBranch(context)); }