web-dev-qa-db-fra.com

Est-il possible de créer des requêtes de fusion en pur Git à partir de la ligne de commande?

J'utilise une installation derrière le pare-feu de Gitorious.

Je peux aller dans l'application Web et créer une demande de tirage à partir d'un clone et cibler le référentiel maître à partir duquel il a été cloné.

J'aimerais pouvoir le faire sur la ligne de commande. Plus précisément, j'aimerais pouvoir ouvrir des demandes de fusion à partir de la ligne de commande d'une branche à une autre (plutôt que du clone au dépôt de semences).

Comme je n'utilise pas Github, je ne peux pas utiliser outils ou bibliothèques spécifiques à Github . Est-ce possible?

32
buley

Il n'y a pas de "demande de fusion" dans git lui-même. Donc, si cela était possible, cela nécessiterait des outils spécifiques à Gitorious. Ce n'est pas possible en pur git.

3
svick

La réponse donnée par svick n'est pas correcte. Il est possible.

Il y a git request-pull qui fait partie de la suite Git. À l'aide de cet outil de ligne de commande, vous pouvez créer une demande d'extraction qui pourrait être envoyée par e-mail.

Exemple:
votre Origin contient une branche master. Maintenant, vous créez une branche locale de correction de bogue fix, implémentez le correctif de bogue et poussez cette branche fix vers Origin:

git Push Origin fix:fix

Ensuite, vous voulez que quelqu'un fusionne les modifications apportées dans la branche fix dans master. Créez la demande d'extraction avec

git request-pull master Origin

Cela créera un texte formaté comme suit:

The following changes since commit <SHA of master>:

  <commit message of SHA of mster>

are available in the git repository at:
  <repo location> fix

<User Name> (<Number of Commits>):
      <messages of the commits>
      ...

 <changed files>
 ...
 <file statistics>

Si la demande de fusion doit aller à quelqu'un qui ne peut pas accéder à votre référentiel où vous avez poussé vos modifications, il y a toujours la possibilité de le faire avec git format-patch .

Après avoir poussé votre branche fix vers Origin (vous n'avez même pas besoin de le faire), tout en étant sur la branche fix créez le patch en utilisant

git format-patch master..

Cela créera un fichier de correctif pour chaque commit que vous avez fait dans fix depuis la dérivation master. Vous pouvez regrouper les fichiers .patch Générés avec

tar czf fix.tgz *.patch

puis envoyer à quelqu'un, par exemple via E-Mail pour vérifier et postuler.

Par souci d'exhaustivité: l'application des correctifs pourrait se faire avec git am .

73
eckes

Vous pouvez utiliser cet outil de ligne de commande: https://github.com/brauliobo/gitorious-merge-request

./gitorious-merge-request -e [email protected] -s 'test' -r '~brauliobo/noosfero/brauliobos-noosfero' -a easysafeinstall -b master -t 'noosfero/noosfero'
5
brauliobo

Gitlab ajoute cette fonctionnalité à partir de la v11.10. Après avoir validé vos dernières modifications, au lieu de Push, utilisez simplement:

git Push -o merge_request.create

pour créer une demande de fusion. Plus de détails dans doc .

1
Ali Zarezade