2015-08-25 5 views
9

Я создал запрос на слияние на сервере gitlab (local). Теперь, когда я нажимаю на запрос слияния, запрос истекает с ошибкой 500. До этого я использовал код ошибки 504, и я применил изменение, указанное в this gitlab support topic.Как удалить запрос слияния с сервера GitLab

Все, что я хочу сделать, это удалить запрос слияния. Есть ли ручной способ сделать это?

+0

Спасибо за редактирование ... как насчет некоторых ответов сейчас! – Sanj

ответ

8

Да, есть .... Я не смог найти способ удалить запрос слияния в пользовательском интерфейсе, но вы можете просто удалить его из базы данных.

(Пожалуйста, обратите внимание, что я только проверил это на gitlab CE 8.4.0-ce.0 на Ubuntu 14.04.3 LTS .. Другие версии могут иметь различные структуры базы данных)

В командной строке выполнить следующая команда (с правами root):

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

Это вызовет командный терминал PostgreSQL. Затем вам нужно будет найти запрос на объединение, который вы хотите удалить. Введите в командном терминале PostgreSQL:

select id, title from merge_requests; 

Вы получите список идентификаторов слияния запросов и названий. Найдите тот, который вы хотите удалить, и обратите внимание на id

ОК, допустим, вы нашли запрос слияния вы хотите удалить, и id является 5. Вы просто удалите все данные, связанные с этим запросом на слияние, используя следующие команды SQL. (Заменитель 5 команд ниже с вашим фактическим запросом слияния 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; 

Теперь вы можете выйти из командного терминала PostgreSQL, введя:

\q 

Вашего запрос слияния должен теперь уйти от веб интерфейс.

+1

Эта процедура по-прежнему работает на Gitlab CE 8.5.8 (46bb47a). Поэтому я полагаю, что и по крайней мере на всех версиях между 8.4.0 и 8.5.8 тоже. –

+0

Я думаю, что решение, предложенное @ thomas-keller, чище. Скручивание непосредственно в БД подвержено ошибкам, и вы должны быть на 100% уверены, что правильно очистите все. Использование API меняет эту ответственность на разработчиков GitLab, которые, несомненно, лучше понимают, что должно (и не должно) случиться при удалении MR. – exhuma

2

Я не знаю, если это работает с CE, а также, но, по крайней мере, EE имеет API конечную точку для удаления запросов слияния:

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

Просто протестирован с CE и работает как шарм. Благодаря! – exhuma

0

Перейти к хранилищу назначения, найти запрос слияния на этом репо и просто нажмите «Закрыть запрос слияния». Поскольку это ваш запрос на слияние, у вас есть права на это.

+1

Закрытие не совсем такое же, как удаление. Закрытие МР хранит его в БД для потомков. Иногда вы можете полностью избавиться от него (например, когда вы открываете MR, чтобы проверить что-то). – exhuma

Смежные вопросы