private void PopulateUI() { if (!DesignMode) { MergeWizard.MergeType mergeType = Wizard.GetPage <MergeTypePage>().SelectedMergeType; MergeOptionsPage mergeOptions = Wizard.GetPage <MergeOptionsPage>(); // Populate Merge Target mergeTargetTextBox.Text = Wizard.MergeTarget.FullPath; // Populate Merge Source 1 if (mergeType == MergeWizard.MergeType.TwoDifferentTrees) { mergeSource1TextBox.Text = Wizard.GetPage <MergeSourceTwoDifferentTreesPage>().MergeSourceOne; } else { mergeSource1TextBox.Text = Wizard.MergeSource.Target.ToString(); } // Populate Merge Source 2 if (mergeType == MergeWizard.MergeType.TwoDifferentTrees) { if (Wizard.GetPage <MergeSourceTwoDifferentTreesPage>().HasSecondMergeSourceUrl) { mergeSource2TextBox.Text = Wizard.GetPage <MergeSourceTwoDifferentTreesPage>().MergeSourceTwo; } else { mergeSource2TextBox.Text = Wizard.GetPage <MergeSourceTwoDifferentTreesPage>().MergeSourceOne; } } else { mergeSource2TextBox.Text = MergeStrings.NotApplicableShort; } // Populate Revisions if (mergeType == MergeWizard.MergeType.TwoDifferentTrees) { MergeSourceTwoDifferentTreesPage tdtPage = Wizard.GetPage <MergeSourceTwoDifferentTreesPage>(); revisionsTextBox.Text = (tdtPage.MergeFromRevision != -1 ? tdtPage.MergeFromRevision.ToString() : MergeStrings.HEAD) + "-" + (tdtPage.MergeToRevision != -1 ? tdtPage.MergeToRevision.ToString() : MergeStrings.HEAD); } else if (Wizard.MergeRevisions == null) { revisionsTextBox.Text = MergeStrings.All; } else { revisionsTextBox.Text = MergeWizard.MergeRevisionsAsString(Wizard.MergeRevisions); } // Populate Binary Conflicts if (mergeOptions.BinaryConflictResolution == MergeOptionsPage.ConflictResolutionOption.MARK) { binaryConflictsTextBox.Text = MergeStrings.ConflictHandlingMark; } else if (mergeOptions.BinaryConflictResolution == MergeOptionsPage.ConflictResolutionOption.MINE) { binaryConflictsTextBox.Text = MergeStrings.ConflictHandlingMine; } else if (mergeOptions.BinaryConflictResolution == MergeOptionsPage.ConflictResolutionOption.PROMPT) { binaryConflictsTextBox.Text = MergeStrings.ConflictHandlingPrompt; } else if (mergeOptions.BinaryConflictResolution == MergeOptionsPage.ConflictResolutionOption.THEIRS) { binaryConflictsTextBox.Text = MergeStrings.ConflictHandlingTheirs; } else if (mergeOptions.BinaryConflictResolution == MergeOptionsPage.ConflictResolutionOption.BASE) { binaryConflictsTextBox.Text = MergeStrings.ConflictHandlingBase; } // Populate Text Conflicts if (mergeOptions.TextConflictResolution == MergeOptionsPage.ConflictResolutionOption.MARK) { textConflictsTextBox.Text = MergeStrings.ConflictHandlingMark; } else if (mergeOptions.TextConflictResolution == MergeOptionsPage.ConflictResolutionOption.MINE) { textConflictsTextBox.Text = MergeStrings.ConflictHandlingMine; } else if (mergeOptions.TextConflictResolution == MergeOptionsPage.ConflictResolutionOption.PROMPT) { textConflictsTextBox.Text = MergeStrings.ConflictHandlingPrompt; } else if (mergeOptions.TextConflictResolution == MergeOptionsPage.ConflictResolutionOption.THEIRS) { textConflictsTextBox.Text = MergeStrings.ConflictHandlingTheirs; } else if (mergeOptions.TextConflictResolution == MergeOptionsPage.ConflictResolutionOption.BASE) { textConflictsTextBox.Text = MergeStrings.ConflictHandlingBase; } // Populate Depth if (mergeOptions.Depth == SharpSvn.SvnDepth.Children) { depthTextBox.Text = MergeStrings.SvnDepthChildren; } else if (mergeOptions.Depth == SharpSvn.SvnDepth.Empty) { depthTextBox.Text = MergeStrings.SvnDepthEmpty; } else if (mergeOptions.Depth == SharpSvn.SvnDepth.Files) { depthTextBox.Text = MergeStrings.SvnDepthFiles; } else if (mergeOptions.Depth == SharpSvn.SvnDepth.Infinity) { depthTextBox.Text = MergeStrings.SvnDepthInfinity; } else if (mergeOptions.Depth == SharpSvn.SvnDepth.Unknown) { depthTextBox.Text = MergeStrings.SvnDepthUnknown; } // Populate Ignore Ancestry if (mergeOptions.IgnoreAncestry) { ignoreAncestryTextBox.Text = MergeStrings.Yes; } else { ignoreAncestryTextBox.Text = MergeStrings.No; } // Populate Allow Unversioned Obstructions if (mergeOptions.AllowUnversionedObstructions) { unversionedObstructionsTextBox.Text = MergeStrings.Yes; } else { unversionedObstructionsTextBox.Text = MergeStrings.No; } } }
public void PerformMerge() { MergeType mergeType = GetPage <MergeTypePage>().SelectedMergeType; ProgressRunnerArgs runnerArgs = new ProgressRunnerArgs(); runnerArgs.CreateLog = !PerformDryRun; // Perform merge using IProgressRunner Context.GetService <IProgressRunner>().RunModal(MergeStrings.MergingTitle, runnerArgs, delegate(object sender, ProgressWorkerArgs ee) { _mergeActions = new List <SvnNotifyEventArgs>(); _resolvedMergeConflicts = new Dictionary <string, List <SvnConflictType> >(); MergeConflictHandler mergeConflictHandler = CreateMergeConflictHandler(); Handler conflictHandler = new Handler(Context, ee.Synchronizer, mergeConflictHandler); try { if (!PerformDryRun) { // Attach the conflict handler ee.Client.Conflict += new EventHandler <SvnConflictEventArgs>(conflictHandler.OnConflict); } // Attach the cancel handler ee.Client.Cancel += new EventHandler <SvnCancelEventArgs>(this.OnCancel); // Attach the notify handler ee.Client.Notify += new EventHandler <SvnNotifyEventArgs>(this.OnNotify); if (mergeType == MergeType.TwoDifferentTrees) { MergeSourceTwoDifferentTreesPage page = ((MergeSourceTwoDifferentTreesPage)mergeSourceTwoDifferentTreesPage); SvnDiffMergeArgs dArgs = new SvnDiffMergeArgs(); Uri fromUri; Uri toUri; // Set the proper depth dArgs.Depth = ((MergeOptionsPage)mergeOptionsPage).Depth; // Set whether or not unversioned obstructions should be allowed dArgs.Force = ((MergeOptionsPage)mergeOptionsPage).AllowUnversionedObstructions; // Set whether or not to ignore ancestry dArgs.IgnoreAncestry = ((MergeOptionsPage)mergeOptionsPage).IgnoreAncestry; // Set whether or not this is a dry run dArgs.DryRun = PerformDryRun; // Create 'From' uri Uri.TryCreate(page.MergeSourceOne, UriKind.Absolute, out fromUri); // Create 'To' uri if necessary if (page.HasSecondMergeSourceUrl) { Uri.TryCreate(page.MergeSourceTwo, UriKind.Absolute, out toUri); } else { toUri = fromUri; } ee.Client.DiffMerge(MergeTarget.FullPath, new SvnUriTarget(fromUri, (page.MergeFromRevision > -1 ? new SvnRevision(page.MergeFromRevision - 1) : SvnRevision.Head)), new SvnUriTarget(toUri, (page.MergeToRevision > -1 ? new SvnRevision(page.MergeToRevision) : SvnRevision.Head)), dArgs); } else if (mergeType == MergeType.Reintegrate) { SvnReintegrationMergeArgs args = new SvnReintegrationMergeArgs(); // Set whether or not this is a dry run args.DryRun = PerformDryRun; ee.Client.ReintegrationMerge(MergeTarget.FullPath, MergeSource.Target, args); } else { SvnMergeArgs args = new SvnMergeArgs(); // Set the proper depth args.Depth = mergeOptionsPage.Depth; // Set whether or not unversioned obstructions should be allowed args.Force = mergeOptionsPage.AllowUnversionedObstructions; // Set whether or not to ignore ancestry args.IgnoreAncestry = mergeOptionsPage.IgnoreAncestry; // Set whether or not this merge should just record the merge information args.RecordOnly = (mergeType == MergeType.ManuallyRecord || mergeType == MergeType.ManuallyRemove); // Set whether or not this is a dry run args.DryRun = PerformDryRun; //no need to continue with the merge operation since there are no revisions to merge if (MergeRevisions != null && EnumTools.GetFirst(MergeRevisions) == null) { throw new Exception(MergeStrings.NoLogItems); } if (MergeRevisions == null) { // Merge all eligible ee.Client.Merge( MergeTarget.FullPath, MergeSource.Target, new SvnRevisionRange(SvnRevision.Zero, SvnRevision.Head), args); } else { // Cherrypicking ee.Client.Merge( MergeTarget.FullPath, MergeSource.Target, new List <SvnRevisionRange>(MergeRevisions), args); } } } finally { if (!PerformDryRun) { // Detach the conflict handler ee.Client.Conflict -= new EventHandler <SvnConflictEventArgs>(conflictHandler.OnConflict); } // Detach the notify handler ee.Client.Notify -= new EventHandler <SvnNotifyEventArgs>(OnNotify); // Detach the cancel handler ee.Client.Cancel -= new EventHandler <SvnCancelEventArgs>(this.OnCancel); if (mergeConflictHandler != null) { _resolvedMergeConflicts = mergeConflictHandler.ResolvedMergedConflicts; mergeConflictHandler = null; } } }); }