private void updateRebaseStatus(MergeRequest mergeRequest) { RemoteRebaseState prevState = _rebaseState; string prevError = _rebaseError; _rebaseError = String.Empty; if (mergeRequest.Rebase_In_Progress.HasValue && mergeRequest.Rebase_In_Progress.Value) { _rebaseState = RemoteRebaseState.InProgress; } else if (mergeRequest.Merge_Error == null) { if (mergeRequest.Has_Conflicts) { _rebaseState = RemoteRebaseState.Required; } else if (_rebaseState == RemoteRebaseState.InProgress) { _rebaseState = RemoteRebaseState.SucceededOrNotNeeded; } else if (_rebaseState == RemoteRebaseState.NotAvailable || _rebaseState == RemoteRebaseState.Failed) { // We have to set initial state of a dialog to Required because it is not possible to tell from GitLab // API if MR needs Rebase or not because has_conflicts flag value can be false even when // GitLab Web UI tells that fast-forwarding merge is not possible and Rebase is needed. _rebaseState = RemoteRebaseState.Required; } } else { if (mergeRequest.Has_Conflicts) { _rebaseState = RemoteRebaseState.Failed; _rebaseError = mergeRequest.Merge_Error; } else { // Seems we just have to ignore Merge_Error field which // remains filled in GitLab responses even after // local rebase is finished and Has_Conflicts is unset. _rebaseState = RemoteRebaseState.SucceededOrNotNeeded; } } if (prevState != _rebaseState) { traceInformation(String.Format("Changed _rebaseState to {0}", _rebaseState.ToString())); } if (prevError != _rebaseError) { traceInformation(String.Format("Changed _rebaseError to {0}", _rebaseError.ToString())); } }
private void updateRebaseStatus(MergeRequestRebaseResponse rebaseResponse) { RemoteRebaseState prevState = _rebaseState; _rebaseError = String.Empty; if (rebaseResponse.Rebase_In_Progress) { _rebaseState = RemoteRebaseState.InProgress; } if (prevState != _rebaseState) { traceInformation(String.Format("Changed _rebaseState to {0}", _rebaseState.ToString())); } }
private void updateRebaseStatus(MergeRequest mergeRequest) { RemoteRebaseState prevState = _rebaseState; string prevError = _rebaseError; _rebaseError = String.Empty; if (mergeRequest.Rebase_In_Progress.HasValue && mergeRequest.Rebase_In_Progress.Value) { _rebaseState = RemoteRebaseState.InProgress; } else if (mergeRequest.Merge_Error == null) { _rebaseState = mergeRequest.Has_Conflicts ? RemoteRebaseState.Required : RemoteRebaseState.SucceededOrNotNeeded; } else { if (mergeRequest.Has_Conflicts) { _rebaseState = RemoteRebaseState.Failed; _rebaseError = mergeRequest.Merge_Error; } else { // Seems we just have to ignore Merge_Error field which // remains filled in GitLab responses even after // local rebase is finished and Has_Conflicts is unset. _rebaseState = RemoteRebaseState.SucceededOrNotNeeded; } } if (prevState != _rebaseState) { traceInformation(String.Format("Changed _rebaseState to {0}", _rebaseState.ToString())); } if (prevError != _rebaseError) { traceInformation(String.Format("Changed _rebaseError to {0}", _rebaseError.ToString())); } }