AutoMerge.CommentFormater.Format C# (CSharp) Method

Format() public method

public Format ( TrackMergeInfo trackMergeInfo, string targetBranch, MergeOption mergeOption ) : string
trackMergeInfo TrackMergeInfo
targetBranch string
mergeOption MergeOption
return string
        public string Format(TrackMergeInfo trackMergeInfo, string targetBranch, MergeOption mergeOption)
        {
            var comment = mergeOption == MergeOption.KeepTarget ? _format.DiscardFormat : _format.Format;
            comment = comment
                .Replace("{OriginalBranch}", BranchHelper.GetShortBranchName(trackMergeInfo.OriginaBranch))
                .Replace("{OriginalBranchFull}", trackMergeInfo.OriginaBranch)
                .Replace("{SourceBranch}", BranchHelper.GetShortBranchName(trackMergeInfo.SourceBranch))
                .Replace("{SourceBranchFull}", trackMergeInfo.SourceBranch)
                .Replace("{TargetBranch}", BranchHelper.GetShortBranchName(targetBranch))
                .Replace("{TargetBranchFull}", targetBranch)
                .Replace("{FromOriginalToTarget}", FromOriginalToTarget(trackMergeInfo, targetBranch))
                .Replace("{FromOriginalToTargetFull}", FromOriginalToTargetFull(trackMergeInfo, targetBranch))
                .Replace("{OriginalComment}", trackMergeInfo.OriginalComment)
                .Replace("{SourceComment}", trackMergeInfo.SourceComment)
                .Replace("{SourceChangesetId}", trackMergeInfo.SourceChangesetId.ToString(CultureInfo.InvariantCulture))
                .Replace("{SourceWorkItemIds}", GetWorkItemIds(trackMergeInfo.SourceWorkItemIds))
                .Replace("{SourceWorkItemTitles}", GetWorkItemTitles(trackMergeInfo.SourceWorkItemTitles));

            return comment;
        }

Usage Example

Example #1
0
        private List<MergeResultModel> MergeExecuteInternal(bool checkInIfSuccess)
        {
            var result = new List<MergeResultModel>();
            var context = Context;
            var tfs = context.TeamProjectCollection;
            var versionControl = tfs.GetService<VersionControlServer>();

            var workspace = _workspace;

            var changesetId = _changeset.ChangesetId;
            var changesetService = _changesetService;
            var changeset = changesetService.GetChangeset(changesetId);
            changeset.Changes = changesetService.GetChanges(changesetId);
            var mergeOption = _mergeOption;
            var workItemStore = tfs.GetService<WorkItemStore>();
            var workItemIds = changeset.AssociatedWorkItems != null
                ? changeset.AssociatedWorkItems.Select(w => w.Id).ToList()
                : new List<int>();

            var mergeInfos = _branches;
            var targetBranches = mergeInfos.Select(m => m.TargetBranch).ToArray();
            var pendingChanges = GetChangesetPendingChanges(changeset.Changes);
            var mergeRelationships = GetMergeRelationships(pendingChanges, targetBranches, versionControl);

            var commentFormater = new CommentFormater(_settings.CommentFormat, _settings.BranchNameMatches);
            foreach (var mergeInfo in mergeInfos.Where(b => b.Checked))
            {
                var mergeResultModel = new MergeResultModel
                {
                    SourceChangesetId = changesetId,
                    BranchInfo = mergeInfo,
                };

                var mergeResult = MergeToBranch(mergeInfo, mergeOption, mergeRelationships, workspace);
                var targetPendingChanges = GetPendingChanges(mergeInfo.TargetPath, workspace);
                if (mergeResult == MergeResult.UnexpectedFileRestored)
                {
                    workspace.Undo(targetPendingChanges.Select(pendingChange => new ItemSpec(pendingChange)).ToArray(),
                        true);
                    mergeResult = MergeByFile(changeset.Changes, mergeInfo.TargetBranch, mergeRelationships,
                        mergeInfo.ChangesetVersionSpec, mergeOption, workspace);
                    targetPendingChanges = GetPendingChangesByFile(mergeRelationships, mergeInfo.TargetBranch, workspace);
                }

                if (targetPendingChanges.Count == 0)
                {
                    mergeResult = MergeResult.NothingMerge;
                }
                mergeResultModel.MergeResult = mergeResult;
                mergeResultModel.PendingChanges = targetPendingChanges;
                mergeResultModel.WorkItemIds = workItemIds;

                var trackMergeInfo = GetTrackMergeInfo(mergeInfo, changeset, versionControl);
                var comment = commentFormater.Format(trackMergeInfo, mergeInfo.TargetBranch, mergeOption);
                mergeResultModel.Comment = comment;

                result.Add(mergeResultModel);
                if (checkInIfSuccess && mergeResultModel.MergeResult == MergeResult.Merged)
                {
                    var checkInResult = CheckIn(mergeResultModel.PendingChanges, comment, workspace, workItemIds, changeset.PolicyOverride, workItemStore);
                    mergeResultModel.TagetChangesetId = checkInResult.ChangesetId;
                    mergeResultModel.MergeResult = checkInResult.CheckinResult;
                }
            }

            return result;
        }