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; } }
private bool IsAnythingToMergeLeft() { return(ChangesetList != null && ChangesetList.Any(changeset => changeset.CanBeMerged)); }
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); } }
protected override void UpdateColumns(ObservableCollection <FieldMapperGridColumn> columns) { ChangesetList.SetColumns(columns); Columns = columns; }