ForgeはEmacspackageの1つ。 magitのインターフェースでGitHubなどコードホスティングサービスを操作できる。 Magitと同じ操作でPull Requestに対してcheckoutなどGit操作が行えたり、操作が高度に統合されている。
- Repository
- magit/forge
git remote set-url origin [email protected]:user/repo.git
(forge-reset-database)
(forge-pull)
GitHubでAPIトークンを発行し、マシンに登録する必要がある。
~~/.authinfo~ に以下のような形式で書き込む。
machine api.github.com login kijimaD^forge password aaaaaaaaaaaaaaaaaaaaaaa
(forge-pull)
してみてできたら成功。
注意: すでにトークンで接続成功していた場合はキャッシュを削除しないと反映しない。
トークン再発行時は注意。
(auth-source-forget-all-cached)
issueにコメントを追加する。
C-c C-n
forge-create-post
buffer nameはmagitの関数を利用して生成している。だから同じ形式で利用できる。 さらにここにforge特有のformat設定を一層増やせばいいのかな。
適当なため毎回magitのトップ画面に行って探している。 番号をorgに貼っておいて、それを開くとtopicを開くようにしたい。
magitのように、ユニバーサル引数を使って別windowで開けるようにしたい。 仕組みが違うみたいでforgeでどうやったらいいのかよくわからないな。
- forge-visit 開くときの関数
- forge-topic-setup-buffer
- magit-setup-buffer
- magit-setup-buffer-internal
#9999 とあった場合、visitするとブラウザが起動してしまう。 そうでなくて、forgeで開いてほしい。
バッファ名を *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
を参考にすればよさそう。
Forgeのマニュアル。