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.

Malabarba
quelle
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.

Konstantin
quelle
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.

Tarsius
quelle
@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 .

Wilfred Hughes
quelle