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
を参考にすればよさそう。