Les forks et merge-requests arrivent (enfin) sur drupal.org !

Posté le Mardi 21 juillet 2020 - 07:47
Dernière mise à jour le Vendredi 20 novembre 2020 - 09:39
Drupal Merge request

Depuis la migration des dépôts du code de Drupal ainsi que de l'ensemble des modules tiers sur Gitlab, nous sommes nombreux à attendre que l'ensemble des possibilités offertes par ce changement soient accessibles.

Une d'entre elle qui simplifiera grandement la proposition de modification de code par les néophytes est la possibilité de faire des « merge requests », à l'image de ce qui se fait sur une instance gitlab ou bien des pull-requests sur github.com.

Actuellement pour proposer une modification sur le core de Drupal ou l'un de ses modules tiers, il faut cloner le dépôt sur sa machine, faire les modifications, générer un patch et enfin proposer le patch. Procédure qui n'est pas inaccessible, mais qui n'est pas simple pour les nouveaux venus. Surtout quand on veut corriger juste un petit truc.

Le nouveau fonctionnement sera beaucoup plus simple. Il faudra commencer par créer un issue sur le projet que l'on souhaite amender :

Image

 

Note : retrouvez le ticket ici : https://www.drupal.org/project/apidae_tourisme/issues/3160451

Une fois cette issue créé, l'issue tracker de drupal proposera de créer un fork (copie) du dépôt. Fork qui sera dédié uniquement au traitement de ce ticket. Si deux personnes veulent proposer deux approches pour un même problème, alors deux forks peuvent être créés.

Image

 

L'adresse du fork en question : https://git.drupalcode.org/issue/apidae_tourisme-3160451

Une fois créé, le fork sera clonable et/ou éditable en ligne directement via le web IDE de Gitlab :

Image

 

Au commit, l'IDE nous proposera de directement créer une merge request, fonctionnalité qui est aussi possible depuis l'interface de Gitlab si l'on fait nos modifications en local et pas dans le web IDE.

Image

 

Voici l'écran de création d'une merge request :

Image

 

Une fois créée, la MR est visible dans le ticket :

Image

 

Image

 

Ensuite l'écran d'une merge request permet de voir les modifications, de faire des commentaires, et d'accepter ou non la modification (voir en ligne : https://git.drupalcode.org/project/apidae_tourisme/-/merge_requests/1)

Image

 

Image

 

À la création d'une merge-request, une notification mail part aussi :

Image

 

 

Générer un patch à partir d'une Merge Request

Rien de plus simple, prenez l'URL d'une MR, par exemple : https://git.drupalcode.org/project/gitlab_api/-/merge_requests/4

Ajoutez .patch à la fin et vous avez votre patch que vous pouvez ajouter à votre fichier composer (plus d'informations) :

https://git.drupalcode.org/project/gitlab_api/-/merge_requests/4.patch

        "patches": {
            "drupal/gitlab_api" : {
                "Allow multiple gitlab server connexions" : "https://git.drupalcode.org/project/gitlab_api/-/merge_requests/4.patch"
            }
        }

Note : il est aussi possible de générer un diff en ajoutant .diff à la fin de l'url d'une merge requrest : https://git.drupalcode.org/project/gitlab_api/-/merge_requests/4.diff

Utiliser un fork avec composer

Si vous souhaitez utiliser une branche d'un module dans un projet pour travailler en « conditions réelles », c'est possible, ajoutez pour cela à la section repositories l'adresse de clonage de votre fork :

{
        "type": "vcs",
        "url": "https://git.drupalcode.org/issue/gitlab_api-3183462.git"
},

J'utilise ici l'adresse https, mais cela fonctionne aussi avec une adresse « git »

Ensuite, ajoutez le module en dépendance de votre projet

composer require 'drupal/gitlab_api:dev-3183462-issue-creation' --prefer-source

La "version" est obtenue en prenant le nom de la branche et en la préfixant de dev-

J'utilise l'argument --prefer-source qui permet de récupérer une version "dépôt" d'où on pourra commiter et pusher des modules.

Ainsi vous pourrez commiter tranquillement dans votre ide, et vos commits s’ajouteront au fur et à mesure à votre Merge Request.

Conclusion

Ainsi on peut se passer complètement de la procédure de patch, même pour des grosses modifications ! Je trouve personnellement la procédure plus simple mais surtout plus accessible pour un·e néophyte.

Actuellement la fonctionnalité est encore en beta, il faut demander l'activation pour un ou plusieurs de ses projets personnels sur ce ticket : https://www.drupal.org/project/drupalorg/issues/3152637. La fonctionnalité est maintenant activée sur l'ensemble des dépôt : https://www.drupal.org/drupalorg/docs/gitlab-integration/issue-forks-me…

Aller plus loin ?

Ajouter un commentaire

Ne sera pas publié

CAPTCHA Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...