J'ai créé une demande de fusion sur le serveur gitlab (local). Maintenant, chaque fois que je clique sur la demande de fusion, la demande expire avec l'erreur 500. Avant cela, j'obtenais un code d'erreur 504 et j'appliquais la modification mentionnée dans cette rubrique de support gitlab .
Tout ce que je veux faire, c'est supprimer la demande de fusion. Existe-t-il une manière manuelle de procéder?
Oui, il y a .... Je n'ai pas trouvé de moyen de supprimer la demande de fusion dans l'interface utilisateur, mais vous pouvez simplement la supprimer de la base de données.
(Veuillez noter que je n'ai testé cela que sur gitlab CE 8.4.0-ce.0 sur Ubuntu 14.04.3 LTS .. D'autres versions peuvent avoir une structure de base de données différente)
À l'invite de commandes, exécutez la commande suivante (en tant que root):
Sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d gitlabhq_production
Cela fera apparaître un terminal de commande PostgreSQL. Ensuite, vous devrez trouver la demande de fusion que vous souhaitez supprimer. Tapez ce qui suit sur le terminal de commande PostgreSQL:
select id, title from merge_requests;
Vous obtiendrez une liste des identifiants et des titres des demandes de fusion. Trouvez celui que vous souhaitez supprimer et notez le id
OK, disons que vous avez trouvé la demande de fusion que vous souhaitez supprimer et que le id
est 5
. Vous allez simplement supprimer toutes les données associées à cette demande de fusion à l'aide des commandes SQL suivantes. (Remplacer 5
dans les commandes ci-dessous avec votre demande de fusion réelle 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;
Vous pouvez maintenant quitter le terminal de commande PostgreSQL en tapant:
\q
Votre demande de fusion devrait maintenant avoir disparu de l'interface Web.
Aujourd'hui, j'ai découvert un moyen de le faire avec l'interface utilisateur Web.
Donc, pour la demande de fusion 14
https://gitlab.example.com/MyGroup/MyProject/merge_requests/14/edit
En bas à droite, vous devriez voir un bouton rouge Supprimer .
Invoke-RestMethod -Method Delete -Uri 'https://gitlab.example.com/api/v4/projects/PROJECT_ID_GOES_HERE/merge_requests/14' -Headers @{'PRIVATE-TOKEN'='PRIVATE_TOKEN_GOES_HERE'}
Je ne sais pas si cela fonctionne également avec CE, mais au moins EE a un point de terminaison API pour supprimer les demandes de fusion:
curl --request DELETE --header "PRIVATE-TOKEN: <private_token>" https://gitlab.example.com/api/v3/projects/4/merge_request/85