/// <summary>Control rebase process.</summary> /// <param name="control">Type of operation.</param> public Task RebaseAsync(RebaseControl control, IProgress <OperationProgress> progress) { Verify.State.IsFalse(IsDisposed, "Repository is disposed."); switch (control) { case RebaseControl.Abort: if (progress != null) { progress.Report(new OperationProgress(Resources.StrsAbortingRebase.AddEllipsis())); } break; case RebaseControl.Continue: if (progress != null) { progress.Report(new OperationProgress(Resources.StrsContinuingRebase.AddEllipsis())); } break; case RebaseControl.Skip: if (progress != null) { progress.Report(new OperationProgress(Resources.StrsSkippingCommit.AddEllipsis())); } break; default: throw new ArgumentException( "Unknown RebaseControl value: {0}".UseAsFormat(control), "control"); } var block = Monitor.BlockNotifications( RepositoryNotifications.BranchChanged, RepositoryNotifications.Checkout, RepositoryNotifications.WorktreeUpdated, RepositoryNotifications.IndexUpdated); return(Accessor.Rebase.InvokeAsync(new RebaseParameters(control), progress, CancellationToken.None) .ContinueWith( t => { block.Dispose(); _refs.RefreshBranches(); _head.Refresh(); _status.Refresh(); OnStateChanged(); OnUpdated(); TaskUtility.PropagateFaultedStates(t); }, CancellationToken.None, TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default)); }
public Task CherryPickAsync(CherryPickControl control, IProgress <OperationProgress> progress) { Verify.State.IsFalse(IsDisposed, "Repository is disposed."); switch (control) { case CherryPickControl.Abort: if (progress != null) { progress.Report(new OperationProgress(Resources.StrsAbortingCherryPick.AddEllipsis())); } break; case CherryPickControl.Continue: if (progress != null) { progress.Report(new OperationProgress(Resources.StrsContinuingCherryPick.AddEllipsis())); } break; case CherryPickControl.Quit: if (progress != null) { progress.Report(new OperationProgress(Resources.StrsQuitingCherryPick.AddEllipsis())); } break; default: throw new ArgumentException( "Unknown CherryPickControl value: {0}".UseAsFormat(control), "control"); } var block = Monitor.BlockNotifications( RepositoryNotifications.BranchChanged, RepositoryNotifications.WorktreeUpdated, RepositoryNotifications.IndexUpdated); return(Accessor.CherryPick.InvokeAsync(new CherryPickParameters(control), progress, CancellationToken.None) .ContinueWith( t => { block.Dispose(); _head.Refresh(); _status.Refresh(); OnStateChanged(); OnUpdated(); TaskUtility.PropagateFaultedStates(t); })); }
public async Task CherryPickAsync(CherryPickControl control, IProgress <OperationProgress> progress) { Verify.State.IsFalse(IsDisposed, "Repository is disposed."); switch (control) { case CherryPickControl.Abort: progress?.Report(new OperationProgress(Resources.StrsAbortingCherryPick.AddEllipsis())); break; case CherryPickControl.Continue: progress?.Report(new OperationProgress(Resources.StrsContinuingCherryPick.AddEllipsis())); break; case CherryPickControl.Quit: progress?.Report(new OperationProgress(Resources.StrsQuitingCherryPick.AddEllipsis())); break; default: throw new ArgumentException( "Unknown CherryPickControl value: {0}".UseAsFormat(control), nameof(control)); } var block = Monitor.BlockNotifications( RepositoryNotifications.BranchChanged, RepositoryNotifications.WorktreeUpdated, RepositoryNotifications.IndexUpdated); try { await Accessor.CherryPick .InvokeAsync(new CherryPickParameters(control), progress, CancellationToken.None) .ConfigureAwait(continueOnCapturedContext: false); } catch { throw; } finally { block.Dispose(); if (Head.Pointer is Branch branch && !branch.IsRemote) { branch.Refresh(); }
/// <summary>Control rebase process.</summary> /// <param name="control">Type of operation.</param> public void Rebase(RebaseControl control) { Verify.State.IsFalse(IsDisposed, "Repository is disposed."); using (Monitor.BlockNotifications( RepositoryNotifications.BranchChanged, RepositoryNotifications.Checkout, RepositoryNotifications.WorktreeUpdated, RepositoryNotifications.IndexUpdated)) { try { Accessor.Rebase.Invoke(new RebaseParameters(control)); } finally { _refs.RefreshBranches(); _head.Refresh(); _status.Refresh(); OnStateChanged(); OnUpdated(); } } }