magit-forge

概要

ForgeはEmacspackageの1つ。 magitのインターフェースでGitHubなどコードホスティングサービスを操作できる。 Magitと同じ操作でPull Requestに対してcheckoutなどGit操作が行えたり、操作が高度に統合されている。

Repository
magit/forge

Memo

URLを変えた場合の対応

git remote set-url origin git@github.com:user/repo.git
(forge-reset-database)
(forge-pull)

API token登録

GitHubでAPIトークンを発行し、マシンに登録する必要がある。

~/.authinfo に以下のような形式で書き込む。

machine api.github.com login kijimaD^forge password aaaaaaaaaaaaaaaaaaaaaaa

(forge-pull) してみてできたら成功。

注意: すでにトークンで接続成功していた場合はキャッシュを削除しないと反映しない。 トークン再発行時は注意。 (auth-source-forget-all-cached)

issue comment

issueにコメントを追加する。 C-c C-n forge-create-post

buffer name

buffer nameはmagitの関数を利用して生成している。だから同じ形式で利用できる。 さらにここにforge特有のformat設定を一層増やせばいいのかな。

Tasks

TODO 管理方法を確立する

適当なため毎回magitのトップ画面に行って探している。 番号をorgに貼っておいて、それを開くとtopicを開くようにしたい。

TODO 別windowで開けるようにする

magitのように、ユニバーサル引数を使って別windowで開けるようにしたい。 仕組みが違うみたいでforgeでどうやったらいいのかよくわからないな。

  • forge-visit 開くときの関数
  • forge-topic-setup-buffer
  • magit-setup-buffer
  • magit-setup-buffer-internal

TODO どうやってissue, PRを辿れるか

#9999 とあった場合、visitするとブラウザが起動してしまう。 そうでなくて、forgeで開いてほしい。

TODO buffner name formatを設定可能にする

バッファ名を *forge: kijimad/emacs #10398 Add magit-forge settings のようにtopic名を含めると、バッファ検索しやすくて便利。

(defun forge-topic-setup-buffer (topic)
  (let* ((repo  (forge-get-repository topic))
         (ident (concat (forge--topic-type-prefix topic)
                        (number-to-string (oref topic number))))
         (name  (format "*forge: %s/%s %s %s*"
                        (oref repo owner)
                        (oref repo name)
                        ident
                        (oref topic title)))
         (magit-generate-buffer-name-function (lambda (_mode _value) name))
         (current-repo (forge-get-repository nil))
         (default-directory (if (and current-repo
                                     (eq (oref current-repo id)
                                         (oref repo id)))
                                default-directory
                              (or (oref repo worktree)
                                  default-directory))))
    (magit-setup-buffer #'forge-topic-mode t
      (forge-buffer-topic topic)
      (forge-buffer-topic-ident ident))))

formatは magit-buffer-name-format を参考にすればよさそう。

Reference

Top (Forge User and Developer Manual)

Forgeのマニュアル。

Archives