private bool CanMerge() { return(SelectedChangesets != null && SelectedChangesets.Any() && Changesets.Count(x => x.ChangesetId >= SelectedChangesets.Min(y => y.ChangesetId) && x.ChangesetId <= SelectedChangesets.Max(y => y.ChangesetId)) == SelectedChangesets.Count); }
public PrepareMergeViewModel(TfsItemCache tfsItemCache, IEnumerable <ITfsChangeset> changesets) : base(typeof(PrepareMergeViewModel)) { try { TfsItemCache = tfsItemCache; Changesets = changesets.OrderBy(changeset => changeset.Changeset.ChangesetId).ToList(); MergeSourcesLoading = new LoadingProgressViewModel(); MergeTargetsLoading = new LoadingProgressViewModel(); ChangesetsLoading = new LoadingProgressViewModel(); ChangesetsRefreshing = new LoadingProgressViewModel(); OpenChangesetCommand = new RelayCommand((o) => OpenChangeset((int)o)); FindOriginalChangesetCommand = new RelayCommand((o) => FindOriginalChangeset((int)o)); PerformMergeCommand = new RelayCommand((o) => PerformMerge(o as ChangesetListElement)); PickPathFilterCommand = new RelayCommand((o) => PickPathFilter()); AutoMergeCommand = new RelayCommand((o) => AutoMerge(), (o) => IsAnythingToMergeLeft()); OKCommand = new RelayCommand((o) => OK()); var potentialMergeSourceBranches = Enumerable.Empty <ITfsBranch>(); bool finished = Repository.Instance.BackgroundTaskManager.RunWithCancelDialog( (progressParams) => { progressParams.TrackProgress.MaxProgress = Changesets.Count(); foreach (var changeset in Changesets) { progressParams.CancellationToken.ThrowIfCancellationRequested(); var list = changeset.GetAffectedBranchesForActiveProject().ToArray(); potentialMergeSourceBranches = potentialMergeSourceBranches.Union(list); progressParams.TrackProgress.Increment(); } }); if (!finished) { throw new OperationCanceledException(); } PossibleMergeSources = potentialMergeSourceBranches.ToList(); ListenToSettingsChanges(); } catch (Exception ex) { SimpleLogger.Log(ex, true, true); throw; } }
public PrepareMergeViewModel(TfsItemCache tfsItemCache, IEnumerable <ITfsChangeset> changesets) : base(typeof(PrepareMergeViewModel)) { TfsItemCache = tfsItemCache; Changesets = changesets.Where(changeset => changeset.Changeset.CreationDate >= (DateTime.Now - new TimeSpan(30, 0, 0, 0))).ToList(); MergeSourcesLoading = new LoadingProgressViewModel(); MergeTargetsLoading = new LoadingProgressViewModel(); ChangesetsLoading = new LoadingProgressViewModel(); ChangesetsRefreshing = new LoadingProgressViewModel(); OpenChangesetCommand = new RelayCommand((o) => OpenChangeset((int)o)); PerformMergeCommand = new RelayCommand((o) => PerformMerge(o as ChangesetListElement)); PickPathFilterCommand = new RelayCommand((o) => PickPathFilter()); AutoMergeCommand = new RelayCommand((o) => AutoMerge(), (o) => IsAnythingToMergeLeft()); OKCommand = new RelayCommand((o) => OK()); var potentialMergeSourceBranches = Enumerable.Empty <ITfsBranch>(); bool finished = Repository.Instance.BackgroundTaskManager.RunWithCancelDialog( (progressParams) => { WorkItems = new List <ITfsWorkItem>(); progressParams.TrackProgress.MaxProgress = Changesets.Count(); foreach (var changeset in Changesets) { progressParams.CancellationToken.ThrowIfCancellationRequested(); foreach (var workItem in changeset.RelatedWorkItems) { progressParams.CancellationToken.ThrowIfCancellationRequested(); WorkItems.Add(workItem); } potentialMergeSourceBranches = potentialMergeSourceBranches.Union(changeset.GetAffectedBranchesForActiveProject()); progressParams.TrackProgress.Increment(); } }); if (!finished) { throw new OperationCanceledException(); } _potentialMergeSourceBranches = potentialMergeSourceBranches.ToList(); }