ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

如何让 GitHub CLI 在非 colocated 的 Jujutsu 仓库中正常工作?

如何让 GitHub CLI 在非 colocated 的 Jujutsu 仓库中正常工作? 如何让 GitHub CLI 在非 colocated 的 Jujutsu 仓库中正常工作【免费下载链接】jjA Git-compatible VCS that is both simple and powerful项目地址: https://gitcode.com/GitHub_Trending/jj/jj在使用 Jujutsujj管理仓库并对接 GitHub 时一个常见的具体问题是GitHub CLIgh无法在非 colocated 的 Jujutsu 仓库中找到正确的 Git 仓库路径对应上游 issue #1008。原因在于非 colocated 工作区里Git 仓库被隐藏存放在.jj目录的一个子目录中而不是工作区根目录下的.gitgh按常规方式探测时找不到它。解决方法很简单把GIT_DIR环境变量指向 jj 给出的 Git 目录路径。本文给出两种做法——单次命令内联设置临时、立即可用和用 direnv 写入.envrc进入目录后自动生效最后给出验证方式和一条可选的替代路径。先确认你的仓库是否属于受影响的情况只有非 colocated的工作区会出现这个问题。colocated混合工作区是jj git init和jj git clone的默认形态Git 仓库与 Jujutsu 工作区共享同一份工作目录根目录下同时存在.jj和.gitGit 工具能直接发现仓库。非 colocated 工作区通过以下方式创建在jj git init或jj git clone上附加--no-colocate标志或设置配置git.colocate false。在这种模式下仓库数据仍以 Git 格式存储但 Git 仓库被隐藏到.jj目录下的子目录中根目录没有.git这就是gh出问题的根源。用下面的命令查看当前工作区的 colocation 状态判断自己是否命中该场景参见 git-compatibility.mdjj git colocation status最小修复为单次命令设置 GIT_DIRjj git root会打印使用 Git 后端的仓库的底层 Git 目录位置。在仓库内执行gh命令时把它作为GIT_DIR的值内联传给该条命令即可$ GIT_DIR$(jj git root) gh issue list这条命令只影响当次gh的执行不修改 shell 环境、不写任何文件适合先验证方案是否对你的仓库有效。命令能正常列出 issue即不再因找不到 Git 仓库而报错就说明路径指对了。自动配置用 direnv 和 .envrc 让 gh 一直可用如果希望不用每次都手动加前缀可以在仓库根目录安装 direnv 并添加.envrc钩子文件让 direnv 在进入目录时自动导出GIT_DIR安装 direnv安装方式以 direnv 官方说明为准本文不展开在仓库根目录创建或编辑.envrc文件加入这一行export GIT_DIR$(jj git root)运行以下命令批准 direnv 执行该文件direnv allow之后进入该仓库目录时 direnv 会自动加载.envrc即使工作区不是 colocated 的GitHub CLI 也能自动工作可以直接像平常一样执行gh issue list等命令。注意.envrc的生效依赖 direnv 已按你 shell 的说明完成初始化这是 direnv 自身的配置要求与 jj 无关。验证按下面的顺序确认修复是否到位jj git root应打印出一个实际存在的 Git 目录路径。如果它输出异常说明仓库不是 Git 后端工作区本文方案不适用临时方式执行GIT_DIR$(jj git root) gh issue list能正常返回 issue 列表即成功自动方式新开一个终端进入仓库目录直接执行gh issue list无需前缀也能正常工作说明 direnv 钩子已生效若想同时确认仓库形态jj git colocation status应显示为非 colocated这与上面的修复互为印证。可选替代路径把工作区改回 colocated如果你之所以用非 colocated 模式是出于文档列出的那些顾虑例如jj与git命令交错导致的分支冲突、ref 数量很大时每条jj命令的自动 import 变慢等完整列表见 git-compatibility.md 的 Colocated Jujutsu/Git workspaces 一节并且可以接受 colocated 的权衡也可以直接让工作区回到 colocated 形态jj git colocation enablecolocated 模式下根目录有.gitGitHub CLI 通常不需要额外设置。需要时可再次用jj git colocation disable转回非 colocated。这条路径改变的是仓库的工作区形态而GIT_DIR方案不改仓库、只影响 Git 工具如何定位仓库按你的实际诉求二选一即可。小结非 colocated 的 Jujutsu 仓库里gh找不到 Git 仓库是路径探测问题不是仓库数据问题最短可行路径是GIT_DIR$(jj git root) gh command需要长期可用就用.envrcdirenv allow自动导出GIT_DIR不想再处理环境变量时可用jj git colocation enable转为 colocated 工作区接受其文档列出的相应限制。【免费下载链接】jjA Git-compatible VCS that is both simple and powerful项目地址: https://gitcode.com/GitHub_Trending/jj/jj创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表