web-dev-qa-db-fra.com

Comment attachez-vous une nouvelle demande d'extraction à un problème existant sur github?

Je ne suis pas sûr, mais j'ai un vague souvenir d'avoir créé une demande d'extraction github avec "Issue 4" ou quelque chose dans le titre, et elle s'est automatiquement jointe à la question 4 du projet auquel je la soumettais. Je l'ai réessayé récemment et cela n'a pas fonctionné - cela a simplement créé un tout nouveau problème. Je ne vois aucune option telle que "Joindre au problème" sur la nouvelle page de demande d'extraction, ni "Ouvrir une nouvelle demande d'extraction pour ce problème" sur la page du problème. Y a-t-il un moyen de le faire pour aider les propriétaires de projet à garder leur page de problèmes propre et à éviter les doubles emplois?

Edit : Pour clarifier, je sais que créer une demande d'extraction crée toujours un problème new. J'aimerais plutôt joindre la demande d'extraction à un problème existant.

388
MatrixFrog

Le projet "hub" peut faire ceci:

https://github.com/defunkt/hub

Dans le référentiel et la branche à partir desquels vous souhaitez envoyer une demande d'extraction:

$ hub pull-request -i 4

Ceci utilise l'API GitHub et attache une demande d'extraction pour la branche actuelle au numéro de problème existant 4.


EDIT: Commentaire de @atomicules: Pour développer la réponse de @MichaelMior, voici un exemple complet:

$ hub pull-request -i 4 -b USERNAME_OF_UPSTREAM_OWNER:UPSTREAM_BRANCH -h YOUR_USERNAME:YOUR_BRANCH URL_TO_ISSUE
238
Christian Oudard

Ajouter une demande d'extraction à un problème existant en amont est facile en supposant que vous ayez créé un fork en utilisant le github normal

Référencez simplement le problème dans votre message de validation en utilisant l’un des mots clés pris en charge :

  • fermer
  • se ferme
  • fermé
  • réparer
  • des correctifs
  • fixé
  • résoudre
  • résout
  • résolu

Par exemple: "ce commit corrige # 116"

Le texte faisant référence au problème n'a pas besoin d'apparaître dans la ligne d'objet de votre commit.

Poussez votre commit vers votre dépôt github et la demande d'extraction sera automatiquement ajoutée au problème. 

Remarque: Bien que cela ne soit pas obligatoire, il est vivement recommandé de commettre tout ce qui fera partie d'une demande d'extraction dans une branche distincte de ce problème, car les commits futurs sur cette branche seront ajoutés à la demande d'extraction (automatiquement par github. ). Ainsi, si vous ne créez pas de branche distincte, si vous la laissez sur maître, puis continuez à se développer, tous vos commits non liés sur master seront ajoutés à votre demande d'extraction.

213
masukomi

Vous pouvez créer une demande d'extraction à partir d'un problème existant avec la API de demande d'extraction :

$ curl --user "smparkes" \
       --request POST \
       --data '{"issue": "15", "head": "smparkes:synchrony", "base": "master"}' \
       https://api.github.com/repos/technoweenie/faraday/pulls

Cela crée une demande d'extraction:

  • demander technoweenie à project faraday (https://api.github.com/repos/technoweenie/faraday/pulls)
  • extraire de la branche synchrony dans smparkes 'fork ("head": "smparkes: synchrony")
  • à la branche master dans la branche de technoweenie ("base": "master")
  • et joignez la demande d'extraction à émettre 15 ("issue": "15")
  • avec l'auteur de la demande d'extraction smparkes (--user "smparkes")
  • votre mot de passe GitHub vous sera demandé
143
technoweenie

Un autre outil possible est le site Web Issue2Pr qui transforme vos problèmes en demandes d'extraction. 

C'est très simple et efficace!

enter image description here

Ressources:

17
nulltoken

Cette autre réponse explique comment utiliser cURL (curl) pour créer une demande d'extraction à partir d'un problème via l'API GitHub . Voici comment procéder à l'aide de HTTPie _ (http), qui produit une commande plus facile à lire et à modifier:

$ http --auth "<your-GitHub-username>" \
       POST \
       https://api.github.com/repos/<issue-repo-owner>/<issue-repo-name>/pulls \
       issue=<issue-number> head=<your-GitHub-username>:<your-fork-branch-name> base=<issue-repo-branch-name>

Puis tapez votre mot de passe GitHub lorsque vous y êtes invité.

Exemple expliqué

Vous vous êtes connecté à GitHub avec le nom d'utilisateur smparkes et le mot de passe hunter2. Vous avez vu le dépôt de technoweenie _ { faraday , vous avez pensé à quelque chose qui devrait être changé, et vous en avez fait un problème, Issue #15 . Plus tard, vous constaterez que personne d’autre n’a apporté le changement que vous proposez et vous avez également le temps de le faire vous-même. Vous (branchez faraday sur votre propre compte }, puis écrivez vos modifications et transmettez-les à votre branche, sous une branche nommée synchrony . Vous pensez que technoweenie devrait appliquer ces modifications à la branche master de son référentiel. C'est la commande que vous écririez pour convertir votre problème précédent en demande d'extraction pour cette situation:

$ http --auth "smparkes" \
       POST \
       https://api.github.com/repos/technoweenie/faraday/pulls \
       issue=15 head=smparkes:synchrony base=master
http: password for [email protected]: hunter2

Maintenant, Issue # 15 est une demande d'extraction.

10
Rory O'Kane

si vous utilisez 2-factor-auth avec github, vous devez fournir l'authtoken comme en-tête dans la requête:

curl -u "<your_username>:<your_pw>" \
     --header 'X-GitHub-OTP: <your_authtoken>' \
     --request POST \
     --data '{"issue":"<issue_nr>", "head":"<your_username>:<your_forks_branchname>", "base":"<upstream_branch>"}' \
     https://api.github.com/repos/<upstream_user>/<upstream_repo>/pulls
3
Jörn Hees

Vous pouvez également utiliser Gub pour soumettre des demandes d'extraction à votre problème.

Il vous aide également à utiliser un style de demande de fourche/traction approprié.

Edit: 10/5/2013

Pour que Gub soumette une demande d'extraction pour le numéro 123, vous devez exécuter les éléments suivants:

$ gub start 123

Cela créera un nouveau numéro de branche-123. Une fois que vous avez fini de travailler sur le problème, exécutez:

$ gub finish

Voila!

Note: Je suis l'auteur de Gub gem.

1
Omar Ali

Si vous avez activé 2FA, vous pouvez utiliser le jeton avec HTTPie:

http POST \
    https://api.github.com/repos/<repo-owner>/<repo-name>/pulls \
    issue=2 head=issue_2 base=master
    "Authorization:token PUTAUTHTOKENHERE"

Ceci utilisera la branche issue_2 pour convertir le problème n ° 2 en une demande d'extraction. 

0
Kyle Gibson

En utilisant l’outil git-hub , vous pouvez le faire avec:

$> git hub pull attach 123

Cela convertirait le problème n ° 123 en une demande d'extraction n ° 123, maintenant ainsi toutes les discussions sur le problème à un seul endroit.

0
Gautam