Befehl, Github zu besuchen, um die Anfrage der aktuellen Filiale mit Magit zu ziehen


15

Es kommt sehr häufig vor, dass ich nach dem Upstream-Push eines bestimmten Zweigs diesen auf github besuchen und eine Pull-Anfrage erstellen möchte. Ich fange an, mich zu ärgern, das Repo manuell aufzusuchen, die Filiale zu finden und die PR zu erstellen.

F: Wie kann ich einen Befehl schreiben, der die PR-URL in einem Browser aufruft?

Die PR-URL wird von gegeben https://github.com/ORIGIN-REPO/compare/BRANCH-NAME. Da sowohl die originals auch die branch-namevon Magit (und von plain git) bekannten, sollte es einfach sein, einen Befehl zu schreiben, der diese URL erstellt und aufruft browse-url.

Leider weiß ich nichts über die internen Abläufe von Magit, daher weiß ich nicht, wie ich an diese Informationen kommen kann.


2
Ich habe das noch nicht untersucht, aber es gibt eine relevante Pull-Anfrage für ein Magit-Plugin: github.com/sigma/magit-gh-pulls/pull/21
glucas

@glucas sieht vielversprechend aus. Ich werde testen, wenn ich die Zeit habe.
Malabarba

Oh, das ist nützlich ...
Sean Allred

Antworten:


9

Folgendes habe ich mir ausgedacht:

(defun pull-request-url ()
  "Build the URL or the pull requestion on GitHub corresponding
to the current branch. Uses Magit."
  (interactive)
  (format "%s/compare/%s"
           (replace-regexp-in-string
            (rx (and string-start (1+ any) "github.com:" (group (1+ any)) ".git" string-end))
            "https://github.com/\\1"
            (magit-get "remote" (magit-get-current-remote) "url"))
          (magit-get-current-branch)))

magit.el ist übrigens ziemlich einfach zu lesen.


3

Malabarba hat seinen Ansatz auf seinem Blog veröffentlicht.

(defun endless/visit-pull-request-url ()
  "Visit the current branch's PR on Github."
  (interactive)
  (browse-url (format "https://github.com/%s/pull/new/%s"
                      (replace-regexp-in-string
                       "\\`.+github\\.com:\\(.+\\)\\.git\\'" "\\1"
                       (magit-get "remote" (magit-get-push-remote) "url"))
                      (magit-get-current-branch))))

Übrigens habe ich vor, Magit selbst irgendwann um ähnliche Funktionen (und vieles mehr ;-) zu erweitern.


@Malabarba der Export dieses Snippets ist in deinem Blog schief gelaufen.
Tarsius

Und lassen Sie es mich wissen, wenn Sie magit so etwas hinzufügen. :-)
Malabarba

3

Hast du schon über Magithub nachgedacht ?

Sie können die Pull-Anforderung der aktuellen Filiale nicht anzeigen, erhalten jedoch eine vollständige Liste der Pull-Anforderungen, die Sie durch Drücken von aufrufen können RET.

Bildbeschreibung hier eingeben

Beachten Sie, dass hierfür Hub 2.2 erforderlich ist .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.