Comando para visitar a solicitação de recebimento do Github da ramificação atual com o Magit

15

É muito comum que, depois de enviar um determinado ramo a montante, deseje visitá-lo no github e criar uma solicitação de recebimento. Estou começando a ficar irritado por ter que visitar manualmente o repositório, encontrar a filial e criar o PR.

P: Como posso escrever um comando que visite o URL do PR em um navegador?

O URL do PR é fornecido por https://github.com/ORIGIN-REPO/compare/BRANCH-NAME. Já que o Magit origine o branch-nameconhecido pelo Magit (e simplesmente git), deve ser fácil escrever um comando que construa esse URL e o chame browse-url.

Infelizmente, não sei nada sobre o funcionamento interno do Magit, então não sei como obter essas informações.

Malabarba
fonte
2
Eu não têm explorado isso, mas há uma solicitação de recebimento relevante para uma magit plugin: github.com/sigma/magit-gh-pulls/pull/21
glucas
@glucas parece promissor. Vou testar quando tiver tempo.
Malabarba
Oh, isso é útil ...
Sean Allred

Respostas:

9

Aqui está o que eu vim com:

(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 é bem fácil de ler, a propósito.

Constantine
fonte
3

Malabarba postou sua abordagem em seu 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))))

A propósito, pretendo adicionar funcionalidades semelhantes (e muito mais ;-) ao próprio Magit, eventualmente.

tarso
fonte
@ Malabarba a exportação desse snippet deu errado no seu blog.
tarsius
E me avise quando você adicionar algo assim ao magit. :-)
Malabarba
3

Você já considerou o magithub ?

Não permite visualizar a solicitação de recebimento da ramificação atual, mas fornece uma lista completa de solicitações de recebimento que você pode visitar pressionando RET.

insira a descrição da imagem aqui

Observe que isso requer o hub 2.2 .

Wilfred Hughes
fonte