Exemple #1
0
        private int?selectMergeRequestFromList(List <MergeRequest> mergeRequests)
        {
            mergeRequests = Tools.Tools.FilterMergeRequests(mergeRequests, Settings);

            HostAndProjectId key = new HostAndProjectId {
                Host = State.HostName, ProjectId = State.Project.Id
            };

            // if we remember MR selected for the given host/project before...
            if (_lastMergeRequestsByProjects.ContainsKey(key)
                // ... and if such MR still exists in a list of MRs
                && mergeRequests.Any((x) => x.IId == _lastMergeRequestsByProjects[key]))
            {
                return(_lastMergeRequestsByProjects[key]);
            }

            return(mergeRequests.Count > 0 ? mergeRequests[0].IId : new Nullable <int>());
        }
Exemple #2
0
        async private Task switchMergeRequestAsync(int mergeRequestIId)
        {
            PreSwitchMergeRequest?.Invoke(mergeRequestIId);

            MergeRequest mergeRequest = new MergeRequest();

            try
            {
                mergeRequest = await Operator.GetMergeRequestAsync(State.Project.Path_With_Namespace, mergeRequestIId);
            }
            catch (OperatorException ex)
            {
                bool cancelled = ex.InternalException is GitLabClientCancelled;
                if (cancelled)
                {
                    Trace.TraceInformation(String.Format("[Workflow] Cancelled switch MR IID to {0}",
                                                         mergeRequestIId.ToString()));
                    return; // silent return
                }
                FailedSwitchMergeRequest?.Invoke();
                throw new WorkflowException(String.Format("Cannot load merge request with IId {0}", mergeRequestIId));
            }

            State.MergeRequest = mergeRequest;

            HostAndProjectId key = new HostAndProjectId {
                Host = State.HostName, ProjectId = State.Project.Id
            };

            _lastMergeRequestsByProjects[key] = mergeRequestIId;

            PostSwitchMergeRequest?.Invoke(State);

            if (!await loadCommitsAsync())
            {
                return; // silent return
            }
            await loadSystemNotesAsync();
        }