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);
        }
Beispiel #4
0
        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);
 }
Beispiel #8
0
        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));
        }