標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

Jujutsu レポジトリで GitHub CLI (ghコマンド) を使う

(2024-02-19:追記あり)

Using GitHub CLI によると

$ GIT_DIR=.jj/repo/store/git gh issue list

のように、環境変数 GIT_DIR に .jj ディレクトリ内の git ディレクトリを指定すればよいようです。

nyagos で、gh コマンドを使う時、この指定を自動的に行うようラッパーを定義しておきましょう。~/.nyagos を以下のエイリアス定義を追加すれば Ok です。

nyagos.alias.gh = function(args)
    local wd = nyagos.getwd()
    local newgitdir = nyagos.pathjoin(wd,".jj\\repo\\store\\git")
    args[0] = "gh.exe" -- replace 'gh' to 'gh.exe'
    if nyagos.access(newgitdir,0) then
        local oldgitdir = nyagos.env.GIT_DIR
        nyagos.env.GIT_DIR = newgitdir
        nyagos.rawexec(args)
        nyagos.env.GIT_DIR = oldgitdir
    else
        nyagos.rawexec(args)
    end
end

bash 環境の場合は、本家によると direnv コマンドを導入して .envrc に次のように書いておけばよいそうです。

export GIT_DIR=$PWD/.jj/repo/store/git

2024-02-19:追記

にも書いたのですが、jj git init --git-repo=. で既存の Git レポジトリを jj 化して、両方使える状態にすると、gh コマンドのエイリアスは必要ではなくなります。

とはいえ、nyagos でコマンドのエイリアスの書き方のサンプルとしては良いので、本記事はそのままにしておきます。