Commande pour visiter Github pull request de la branche actuelle avec Magit

15

Il est très courant qu'après avoir poussé une branche donnée en amont, je veuille la visiter sur github et créer une demande de pull. Je commence à m'énerver d'avoir à visiter manuellement le repo, à trouver la succursale et à créer le PR.

Q: Comment puis-je écrire une commande qui visite l'URL PR dans un navigateur?

L'URL PR est donnée par https://github.com/ORIGIN-REPO/compare/BRANCH-NAME. Étant donné que le originet le branch-nameconnu par Magit (et par plain git), il devrait être facile d'écrire une commande qui construit cette URL et l'appelle browse-url.

Malheureusement, je ne sais rien du fonctionnement interne de Magit, donc je ne sais pas comment obtenir cette information.

Malabarba
la source
2
Je n'ai pas exploré cela, mais il y a une demande d'extraction pertinente vers un plugin magit
glucas
@glucas semble prometteur. Je testerai quand j'aurai le temps.
Malabarba
Oh, c'est utile…
Sean Allred

Réponses:

9

Voici ce que j'ai trouvé:

(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 est assez facile à lire, soit dit en passant.

Constantine
la source
3

Malabarba a publié son approche sur son blog.

(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))))

Soit dit en passant, j'ai l'intention d'ajouter des fonctionnalités similaires (et beaucoup plus ;-) à Magit lui-même, éventuellement.

tarse
la source
@Malabarba, l'exportation de cet extrait a mal tourné sur votre blog.
tarsius
Et faites-moi savoir quand vous ajoutez quelque chose comme ça dans magit. :-)
Malabarba
3

Avez-vous pensé à magithub ?

Il ne vous permet pas d'afficher la demande d'extraction de la branche actuelle, mais il vous donne une liste complète des demandes d'extraction que vous pouvez visiter en appuyant sur RET.

entrez la description de l'image ici

Notez que cela nécessite le hub 2.2 .

Wilfred Hughes
la source