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()));
            }
        }
Beispiel #3
0
        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()));
            }
        }