Beispiel #1
0
        private void AutoMerge()
        {
            var confirm = new MessageBoxViewModel("vMerge: AutoMerge all changesets", "All changesets will be merged silently as long as no conflict arises. Are you really sure to proceed?", MessageBoxViewModel.MessageBoxButtons.None);
            var goOn    = new MessageBoxViewModel.MessageBoxButton("Merge silently");
            var cancel  = new MessageBoxViewModel.MessageBoxButton("Cancel");

            confirm.ConfirmButtons.Add(goOn);
            confirm.ConfirmButtons.Add(cancel);
            Repository.Instance.ViewManager.ShowModal(confirm);
            if (goOn.IsChecked)
            {
                Repository.Instance.BackgroundTaskManager.RunWithCancelDialog(
                    (progressParams) =>
                {
                    progressParams.TrackProgress.MaxProgress = ChangesetList.Where(item => item.CanBeMerged).Count();
                    foreach (var changeset in ChangesetList.Where(item => item.CanBeMerged).OrderBy(item => item.SourceCheckinId))
                    {
                        progressParams.TrackProgress.Increment();
                        progressParams.CancellationToken.ThrowIfCancellationRequested();

                        var copy = progressParams.CloneWithoutIncrements();
                        if (!PerformMerge(changeset, copy))
                        {
                            var cancelled = new MessageBoxViewModel("vMerge: AutoMerge all changesets", "AutoMerge has been cancelled. Please merge the remaining changesets manually.", MessageBoxViewModel.MessageBoxButtons.OK);
                            Repository.Instance.ViewManager.ShowModal(cancelled);
                        }
                    }
                }, "Merging changesets ...");

                LoadAllAssociatedChangesetsIncludingMerges(true);
            }
        }
        private void AutoMerge()
        {
            try
            {
                var confirm = new MessageBoxViewModel("vMerge: AutoMerge all changesets", "All changesets will be merged silently as long as no conflict arises. Are you really sure to proceed?", MessageBoxViewModel.MessageBoxButtons.None);
                var goOn    = new MessageBoxViewModel.MessageBoxButton("Merge silently");
                var cancel  = new MessageBoxViewModel.MessageBoxButton("Cancel");

                confirm.ConfirmButtons.Add(goOn);
                confirm.ConfirmButtons.Add(cancel);
                Repository.Instance.ViewManager.ShowModal(confirm);
                if (goOn.IsChecked)
                {
                    ChangesetListElement conflictingChangeset = null;
                    Repository.Instance.BackgroundTaskManager.RunWithCancelDialog(
                        (progressParams) =>
                    {
                        progressParams.TrackProgress.MaxProgress = ChangesetList.Where(item => item.CanBeMerged).Count();
                        foreach (var changeset in ChangesetList.Where(item => item.CanBeMerged).OrderBy(item => item.SourceCheckinId))
                        {
                            progressParams.TrackProgress.Increment();
                            progressParams.CancellationToken.ThrowIfCancellationRequested();

                            var copy = progressParams.CloneWithoutIncrements();
                            if (!PerformMerge(changeset, copy))
                            {
                                SimpleLogger.Log(SimpleLogLevel.Info, "Merge conflict in: " + changeset.SourceCheckinId + " " + changeset.SourceComment);
                                conflictingChangeset = changeset;
                                break;
                            }
                        }
                    }, "Merging changesets ...");

                    if (conflictingChangeset != null)
                    {
                        var comment = conflictingChangeset.SourceComment;
                        if (comment.Length > 80)
                        {
                            comment = comment.Substring(0, 77) + "...";
                        }
                        var cancelled = new MessageBoxViewModel("vMerge: AutoMerge all changesets", String.Format("AutoMerge has stopped due to a conflict caused by changeset #{0} (comment: \"{1}\").\r\nPlease merge the remaining changesets manually.", conflictingChangeset.SourceCheckinId, comment), MessageBoxViewModel.MessageBoxButtons.OK);
                        Repository.Instance.ViewManager.ShowModal(cancelled);
                    }

                    LoadAllAssociatedChangesetsIncludingMerges(true);
                }
            } catch (Exception ex)
            {
                SimpleLogger.Log(ex, true, false);
            }
        }
        void FindOriginalChangeset(int id)
        {
            var listElement = ChangesetList.Where(item => item.SourceCheckinId == id).FirstOrDefault();

            if (listElement == null)
            {
                throw new ArgumentException("Changeset Id not found in list");
            }

            var changeset = TfsItemCache.GetChangesetFromCache(id);

            if (changeset == null)
            {
                throw new ArgumentException("Changeset not found");
            }

            var sourceChangesets = new Dictionary <int, MergedChangeset>();
            var targetChangesets = new Dictionary <int, MergedChangeset>();

            foreach (var merge in changeset.TfsChangeset.FindMergesForActiveProject(MergeSource, PossibleMergeTargets))
            {
                sourceChangesets[merge.Source.Changeset.ChangesetId] = merge;
                targetChangesets[merge.Target.Changeset.ChangesetId] = merge;
            }

            var relevantId = sourceChangesets.Keys.Except(targetChangesets.Keys).ToArray();

            if (relevantId.Length > 1)
            {
                listElement.OriginalChangesetId     = id;
                listElement.OriginalChangesetLoaded = true;
                listElement.HasWarning  = true;
                listElement.WarningText = "Could not determine original changeset.";
            }
            else
            {
                listElement.OriginalChangesetId     = relevantId.Length > 0 ? relevantId[0] : id;
                listElement.OriginalChangesetLoaded = true;
            }
        }
Beispiel #4
0
 private bool IsAnythingToMergeLeft()
 {
     return(ChangesetList != null && ChangesetList.Any(changeset => changeset.CanBeMerged));
 }
Beispiel #5
0
        void PerformApplyFilter()
        {
            SimpleLogger.Log(SimpleLogLevel.Info, "Start perform apply changeset filters");
            _applyFilterTimer.Stop();
            _applyFilterTimer.IsEnabled = false;
            var defaultProfile = Repository.Instance.ProfileProvider.GetDefaultProfile();

            if (defaultProfile == null)
            {
                return;
            }

            try
            {
                DetachFromProfileProvider();
                defaultProfile.ChangesetIncludeCommentFilter = IncludeCommentFilterActive ? IncludeCommentFilter : null;
                defaultProfile.ChangesetExcludeCommentFilter = ExcludeCommentFilterActive ? ExcludeCommentFilter : null;
                defaultProfile.DateFromFilter = DateFromFilterActive ? DateFromFilter : null;
                defaultProfile.DateToFilter   = DateToFilterActive ? DateToFilter : null;
            }
            finally
            {
                AttachToProfileProvider();
            }

            Regex reInc = null, reExc = null;

            if (IncludeCommentFilterActive)
            {
                try
                {
                    reInc = new Regex(IncludeCommentFilter);
                }
                catch (Exception)
                {
                    reInc = null;
                }
            }
            if (ExcludeCommentFilterActive)
            {
                try
                {
                    reExc = new Regex(ExcludeCommentFilter);
                }
                catch (Exception)
                {
                    reExc = null;
                }
            }
            var newFilteredChangesets = new ObservableCollection <TfsChangesetWrapper>();

            foreach (var cs in Changesets)
            {
                if (reInc != null)
                {
                    if (!reInc.IsMatch(cs.TfsChangeset.Description))
                    {
                        continue;
                    }
                }
                if (reExc != null)
                {
                    if (reExc.IsMatch(cs.TfsChangeset.Description))
                    {
                        continue;
                    }
                }
                if (DateFromFilterActive)
                {
                    if (cs.TfsChangeset.Changeset.CreationDate < DateFromFilter)
                    {
                        continue;
                    }
                }
                if (DateToFilterActive)
                {
                    if (cs.TfsChangeset.Changeset.CreationDate > DateToFilter)
                    {
                        continue;
                    }
                }
                newFilteredChangesets.Add(cs);
            }

            FilteredChangesets = newFilteredChangesets;
            ChangesetList.SetContent(FilteredChangesets);
            foreach (var item in TfsItemCache.ChangesetCache)
            {
                item.IsVisible = FilteredChangesets.Contains(item);
            }
        }
Beispiel #6
0
 protected override void UpdateColumns(ObservableCollection <FieldMapperGridColumn> columns)
 {
     ChangesetList.SetColumns(columns);
     Columns = columns;
 }