wake-up-neo.net

Wie hängen Sie eine neue Pull-Anfrage an ein bestehendes Problem auf Github an?

Ich bin mir nicht sicher, aber ich habe eine vage Erinnerung daran, eine Github-Pull-Anfrage mit "Ausgabe 4" oder etwas im Titel zu erstellen, die sich automatisch mit der Ausgabe 4 des Projekts verbunden hat, an das ich sie vorlegte. Ich habe es vor kurzem noch einmal versucht und es hat nicht funktioniert - stattdessen wurde ein brandneues Problem erstellt. Ich sehe keine Optionen wie "An Problem anhängen" auf der neuen Pull-Anforderungsseite oder "Neue Pull-Anforderung für dieses Problem öffnen" auf der Problemseite. Gibt es eine Möglichkeit, dies zu tun, um Projektinhabern zu helfen, die Seite "Probleme" sauber zu halten und Doppelarbeit zu vermeiden?

Bearbeiten : Zur Klarstellung weiß ich, dass beim Erstellen einer Pull-Anforderung immer ein new -Ausgang erstellt wird. Ich möchte stattdessen die Pull-Anfrage an eine bestehende -Ausgabe anhängen.

388
MatrixFrog

Das "Hub" -Projekt kann dies tun:

https://github.com/defunkt/hub

Im Repository und Zweig, von dem Sie eine Pull-Anforderung senden möchten:

$ hub pull-request -i 4

Hierbei wird die GitHub-API verwendet und eine Pull-Anforderung für den aktuellen Zweig an die vorhandene Ausgabenummer 4 angehängt.


EDIT: Kommentar von @atomicules: Um die Antwort von @MichaelMior zu erweitern, ist ein vollständiges Beispiel:

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

Das Hinzufügen einer Pull-Anfrage zu einem vorhandenen Upstream-Problem ist einfach vorausgesetzt, Sie haben sich mit den normalen github-Mitteln verzweigt. 

Verweisen Sie das Problem in Ihrer Festschreibungsnachricht einfach mit einem der unterstützten Schlüsselwörter :

  • schließen
  • schließt
  • geschlossen
  • fix
  • korrigiert
  • fest
  • entschlossenheit
  • löst auf
  • aufgelöst

Zum Beispiel: "Dieses Commit behebt # 116"

Der Text, der auf das Problem verweist, muss nicht in der Betreffzeile Ihres Commits erscheinen.

Drücken Sie Ihr Commit für Ihr Github-Repo und die Pull-Anforderung wird automatisch an das Problem angehängt. 

Hinweis: Obwohl dies nicht erforderlich ist, wird dringend empfohlen, dass Sie etwas, das Teil einer Pull-Anforderung ist, an einen separaten Zweig, der für dieses Problem spezifisch ist, festschreiben, da zukünftige Festschreibungen für diesen Zweig an die Pull-Anforderung angehängt werden (automatisch von Github.) ). Wenn Sie also keinen eigenen Zweig erstellt, ihn auf master gesetzt und dann weiterentwickelt haben, werden alle Ihre nicht verwandten Commits an master an Ihre Pull-Anforderung angehängt.

213
masukomi

Sie können eine Pull-Anforderung aus einem vorhandenen Problem mit der Pull-Anforderungs-API erstellen :

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

Dadurch wird eine Pull-Anforderung erstellt:

  • fragen Sie technoweenie im Projekt faraday (https://api.github.com/repos/technoweenie/faraday/pulls)
  • vom Zweig synchrony in smparkes 'fork ziehen ("head": "smparkes: synchrony")
  • zum Zweig master in technoweenies Gabel ("base": "master")
  • und fügen Sie die Pull-Anforderung an Ausgabe 15 an ("Ausgabe": "15")
  • mit dem Pull-Anforderungsautor smparkes (--user "smparkes")
  • sie werden aufgefordert, Ihr GitHub-Passwort einzugeben
143
technoweenie

Ein anderes mögliches Werkzeug ist die Issue2Pr-Website, die Ihre Ausgaben in Pull-Requests umwandelt. 

Es ist sehr einfach und effektiv!

enter image description here

Ressourcen:

17
nulltoken

Diese andere Antwort erläutert, wie Sie mit cURL (curl) eine Pull-Anforderung aus einem Issue über die GitHub-API erstellen. Gehen Sie dazu wie folgt vor: Verwenden Sie HTTPie (http), um einen einfach zu lesenden und leichter zu bearbeitenden Befehl zu erhalten:

$ 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>

Geben Sie dann Ihr GitHub-Passwort ein, wenn Sie dazu aufgefordert werden.

Erklärtes Beispiel

Sie haben sich bei GitHub mit dem Benutzernamen smparkes und dem Passwort hunter2 angemeldet. Sie sahen technoweenie s Repo faraday , dachte an etwas, das geändert werden sollte, und machte eine Ausgabe in diesem Repo, Ausgabe # fünfzehn . Später stellen Sie fest, dass niemand anderes Ihre vorgeschlagene Änderung vorgenommen hat, und Sie haben auch etwas Zeit, um es selbst zu tun. Sie Fork Faraday auf Ihr eigenes Konto , schreiben Sie dann Ihre Änderungen und drücken Sie sie unter einem Zweig mit dem Namen Synchrony in Ihren Zweig. Sie denken, technoweenie sollte diese Änderungen in den Zweig master seines Repos übernehmen. Dies ist der Befehl, den Sie schreiben würden, um Ihre vorherige Ausgabe in eine Pull-Anforderung für diese Situation umzuwandeln:

$ 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

Jetzt ist Ausgabe #15 eine Pull-Anforderung.

10
Rory O'Kane

wenn Sie 2-factor-auth mit github verwenden, müssen Sie das authtoken als Header in der Anforderung angeben:

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

Sie können auch Gub verwenden, um Pull-Anfragen für Ihr Problem einzureichen.

Es hilft Ihnen auch, einen richtigen Gabel-/Pull-Anforderungsstil zu verwenden.

Edit: 05.10.2013

Damit Gub Pull-Request für Ausgabe # 123 übermitteln kann, müssen Sie Folgendes ausführen:

$ gub start 123

Dadurch wird ein neues Zweigproblem 123 erstellt. Wenn Sie mit dem Problem fertig sind, führen Sie Folgendes aus:

$ gub finish

Voila!

Hinweis: Ich bin der Autor von Gub Gem.

1
Omar Ali

Wenn Sie 2FA aktiviert haben, können Sie das Token mit HTTP übergeben:

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

Dies wird den Zweig issue_2 verwenden, um Ausgabe # 2 in eine Pull-Anforderung umzuwandeln. 

0
Kyle Gibson

Mit dem Tool git-hub können Sie dies mit folgendem tun:

$> git hub pull attach 123

Dies würde die Ausgabe # 123 in die Pull-Anforderung # 123 umwandeln und somit die gesamte Diskussion über das Problem an einem einzigen Ort aufrechterhalten.

0
Gautam