4

私は、通常の開発者がすべきであるように、手動で退屈で反復的なタスクを嫌います。最近気づいたのですが、多数の git リポジトリでプル リクエストを作成すると、時間がかかりすぎます。ほとんどの場合、ほぼ正確な手順を何度も実行する必要があります。

  • git プロバイダーの Web クライアントにログインします。Stash を使用します。
  • クリック、クリック、「Create Pull Request」ボタンが見つかるまでクリックし、それをクリックします
  • ブランチを選択します - 通常はプッシュされたばかりのブランチです
  • ターゲットブランチを選択します - ほとんどの場合、それは「開発」です
  • レビュアーを追加 - ほとんどの場合、まったく同じ人
  • 説明を追加 - オプション

ある時点で、Web クライアントを使用せずにこれらすべてを実行できるかどうか疑問に思い始めました。そして、それは可能であるようです。Stash と Bitbucket には api がありGithub にも api があります(違いますが、最初のものは ssh を使用し、後者は http を使用します)。

さて、これはおそらくいくつかのことを単純化するでしょうが、私はそれがさらに良くなる可能性があると感じています.

私は Emacs (具体的には Spacemacs ディストリビューション) を使用しています。今、誰かが と統合するものをすでに構築magitしているのか、それとも自分でできるのか疑問に思っていますか? つまり、それはどれほど難しいでしょうか?スクリプトを使用すると、コミットしてブランチをプッシュし、指定されたデフォルトを使用して、そのブランチに基づいて「開発」に対してプルリクエストを作成できます。誰かがそのようなことをしたことがありますか?

同様のことを行うためにelispの力を利用するいくつかのプラグインを教えてください。magitひょっとしたら自分でも何か書けるかもしれません。

4

3 に答える 3

5

github で emacs からの PR の作成に関するこの元の投稿を見つけました。 http://endlessparentheses.com/easyly-create-github-prs-from-magit.html

これは bitbucket (stash) では機能しませんでした。しかし、自分に合った解決策をハックするのに十分な情報でした.

https://github.com/flamingbear/emacs-config/blob/master/site-lisp/lisp/mhs-magit.el

(defun endless/visit-pull-request-url ()
  "Visit the current branch's PR on Github."
  (interactive)
  (let ((repo (magit-get "remote" (magit-get-remote) "url")))
    (if (string-match "github\\.com" repo)
    (visit-gh-pull-request repo)
  (visit-bb-pull-request repo))))


(defun visit-gh-pull-request (repo)
  "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"
      repo)
     (cdr (magit-get-remote-branch)))))



;; Bitbucket pull requests are kinda funky, it seems to try to just do the
;; right thing, so there's no branches to include.
;; https://bitbucket.org/<username>/<project>/pull-request/new
(defun visit-bb-pull-request (repo)
  (browse-url
   (format "https://bitbucket.org/%s/pull-request/new"
           (replace-regexp-in-string
            "\\`.+bitbucket\\.org:\\(.+\\)\\.git\\'" "\\1"
            repo))))

;; visit PR for github or bitbucket repositories with "v"
(eval-after-load 'magit
  '(define-key magit-mode-map "v"
     #'endless/visit-pull-request-url))
于 2015-10-02T19:33:15.450 に答える