Comando para visitar la solicitud de extracción de Github de la rama actual con Magit

15

Es muy común que, después de impulsar una rama determinada aguas arriba, quiera visitarla en Github y crear una solicitud de extracción. Estoy empezando a molestarme por tener que visitar manualmente el repositorio, encontrar la sucursal y crear el RP.

P: ¿Cómo puedo escribir un comando que visite la URL de PR en un navegador?

La URL de PR viene dada por https://github.com/ORIGIN-REPO/compare/BRANCH-NAME. Dado que tanto el originy la branch-nameconocida por Magit (y en avión git), que debe ser fácil de escribir un comando que construye esa URL y llamadas browse-urlen él.

Desafortunadamente, no sé nada sobre el funcionamiento interno de Magit, así que no sé cómo obtener esa información.

Malabarba
fuente
2
No he explorado esto, pero hay una solicitud de extracción relevante para un complemento magit
glucas
@glucas parece prometedor. Probaré cuando tenga tiempo.
Malabarba
Oh, esto es útil ...
Sean Allred

Respuestas:

9

Esto es lo que se me ocurrió:

(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 es bastante fácil de leer, por cierto.

Constantina
fuente
3

Malabarba ha publicado su enfoque en su 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))))

Por cierto, tengo la intención de agregar una funcionalidad similar (y mucho más ;-) al propio Magit, eventualmente.

tarsius
fuente
@Malabarba la exportación de ese fragmento salió mal en tu blog.
tarsius
Y avísame cuando agregues algo así al magit. :-)
Malabarba
3

¿Has considerado magithub ?

No le permite ver la solicitud de extracción de la sucursal actual, pero le brinda una lista completa de las solicitudes de extracción que puede visitar presionando RET.

ingrese la descripción de la imagen aquí

Tenga en cuenta que esto requiere el hub 2.2 .

Wilfred Hughes
fuente