2015-08-25 19 views
9

Utworzono żądanie scalenia na serwerze gitlab (lokalnym). Teraz za każdym razem, gdy klikam na prośbę o połączenie, żądanie kończy się z błędem 500. Wcześniej otrzymałem kod błędu 504 i zastosowałem zmianę wspomnianą w this gitlab support topic.Jak usunąć żądanie scalenia z serwera GitLab

Wszystko, co chcę zrobić, to usunąć żądanie scalenia. Czy istnieje ręczny sposób robienia tego?

+0

Dzięki za zmiany ... o niektórych odpowiedziach teraz !! – Sanj

Odpowiedz

8

Tak, istnieje .... Nie mogłem znaleźć sposobu na usunięcie żądania scalenia w interfejsie użytkownika, ale można po prostu usunąć je z bazy danych.

(Należy pamiętać, że tylko przetestowane na gitlab CE 8.4.0-ce.0 na Ubuntu 14.04.3 LTS .. Inne wersje mogą mieć różne struktury bazy danych)

W wierszu poleceń wykonać następujące polecenie (jako root):

sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d gitlabhq_production 

Spowoduje to wyświetlenie terminalu poleceń PostgreSQL. Następnie musisz znaleźć żądanie scalenia, które chcesz usunąć. Wpisz następujące polecenie w terminalu poleceń PostgreSQL:

select id, title from merge_requests; 

Otrzymasz listę żądań ids i tytułów. Znajdź ten, który chcesz usunąć, i zanotuj odpowiedź: id OK, załóżmy, że znalazłeś żądanie scalenia, które chcesz usunąć, a id to 5. Po prostu usuniesz wszystkie dane powiązane z tym żądaniem scalenia za pomocą następujących poleceń SQL. (Zastępca 5 w poniższych poleceń rzeczywistą żądanie seryjnej id)

delete from merge_requests where id = 5; 
delete from merge_request_diffs where merge_request_id = 5; 
delete from notes where noteable_type = 'MergeRequest' and noteable_id = 5; 

Można teraz wyjście z terminalu polecenia PostgreSQL wpisując:

\q 

Żądanie seryjnej powinna zniknąć z interfejs sieciowy.

+1

Ta procedura nadal działa na Gitlab CE 8.5.8 (46bb47a). Więc przypuszczam, że również przynajmniej we wszystkich wersjach pomiędzy 8.4.0 a 8.5.8 też. –

+0

Myślę, że rozwiązanie zaproponowane przez @ thomas-keller jest czystsze. Błąkanie bezpośrednio w DB jest podatne na błędy i musisz mieć 100% pewności, że wszystko dokładnie wyczyścisz. Korzystanie z interfejsu API przenosi tę odpowiedzialność na programistów GitLab, którzy niewątpliwie lepiej rozumieją, co powinno (a czego nie powinno) zdarzyć się podczas usuwania MR. – exhuma

2

Nie wiem, czy to działa z CE, a także, ale przynajmniej EE ma końcowy API do usunięcia żądania Merge:

curl --request DELETE --header "PRIVATE-TOKEN: <private_token>" https://gitlab.example.com/api/v3/projects/4/merge_request/85 
+0

Właśnie testowane z CE i działa jak urok. Dzięki! – exhuma

0

Przejdź do repozytorium docelowego, znaleźć na tej prośby seryjnej repo i kliknij "Zamknij żądanie scalenia". Ponieważ jest to twoja prośba o scalenie, masz do tego prawo.

+1

Zamknięcie nie jest identyczne z usuwaniem. Zamknięcie MR utrzymuje go w DB dla potomności. Czasami możesz chcieć całkowicie się go pozbyć (na przykład po otwarciu MR, aby coś przetestować). – exhuma