跳到正文

LoserFox/dsh-git-identity

70最近提交 2026年8月13日

dsh-git-identity DSH 插件

该插件确保 DSH agent 会话中执行的 git commit 使用正确的作者身份。它从环境(gh CLI、GIT_AUTHOR_* 环境变量、git config --global)解析身份,并注入到 GIT_AUTHOR_* 和 GIT_COMMITTER_* 环境变量中,这些环境变量优先级高于 git config。同时,当全局配置缺失或错误时,它会幂等地同步回 git config --global。

如何安装 dsh-git-identity DSH 插件

dsh plugin --profile web add /path/to/dsh-git-identity

复制不会执行命令。安装 dsh-git-identity DSH 插件前请核对仓库和版本。

dsh-git-identity DSH 插件数据来源

dsh-git-identity DSH 插件快照日期:2026年8月16日

discovered

dsh-git-identity DSH 插件能做什么

  • 从多个来源自动解析 git 身份:插件配置、gh CLI 登录账号、GIT_AUTHOR_* 环境变量、git config --global。
  • 将身份注入到 GIT_AUTHOR_* 和 GIT_COMMITTER_* 环境变量,确保所有子进程的 git 提交使用正确的作者。
  • 当全局配置缺失或错误时,幂等地将身份同步回 git config --global。
  • 零依赖,纯 ESM 模块,开发无需构建步骤。

dsh-git-identity DSH 插件适合哪些场景

  • 避免 DSH 会话中因之前覆盖了 user.name/user.email 而导致的 git 提交作者错误。
  • 在 DSH 的多个 profile(web、headless)中保持一致的 git 作者身份。
  • 自动使用 GitHub CLI 登录身份进行提交,无需手动配置。
  • 确保 DSH 内任何子进程发起的 git 提交都反映预期的用户身份。

dsh-git-identity DSH 插件适合谁

  • 在 DSH agent 会话中执行 git 操作的 DSH 用户。
  • 在共享 DSH 环境中需要管理 git 作者身份的开发者。

dsh-git-identity DSH 插件的限制

  • 安装后需要重启目标 profile(组合层变更不支持 HMR 热更新)。
  • 如果无法从任何来源解析到身份,插件仅告警,不会注入任何身份。
  • 依赖 DSH 的 subprocess 层将环境变量传递给 bash 子进程(如果绕过 subprocess 则可能失效)。

dsh-git-identity DSH 插件的仓库 README 摘录

以下文字摘自 dsh-git-identity DSH 插件的上游仓库 LoserFox/dsh-git-identity 的 README,版权归原作者,仅作引用。

DSH **profile bundle**(0812+ 的官方插件系统):让 DSH 内产生的所有 git 提交使用 环境自身的作者身份。优先读取 gh CLI 的登录账号(name 取 login,email 取 GitHub noreply 地址 `<id>+<login>@users.noreply.github.com`),其次启动环境的 `GIT_AUTHOR_*`、`git config --global` 兜底。 ## 为什么需要它 DSH 的 agent 会话通过 bash 工具执行 `git commit`。历史上一旦某个会话显式 `-c user.name="DSH Agent"` 或改掉了 git 配置,后续提交就会带着错误的作者。 本插件在加载时把解析到的身份写入 `GIT_AUTHOR_*` / `GIT_COMMITTER_*` 四个环境变量, DSH 的 subprocess 层会把 `process.env`(剔除凭据)传给每个 bash 子进程,而 git 的 环境变量优先级高于一切 git config——所以 DSH 内任何路径发起的提交都必然使用该身份。 同时幂等同步回 `git config --global`,让插件进程外的普通终端提交也保持一致 (仅当 global 配置缺失或被改错时写回)。 ## 安装(0812 profile bundle 系统) ```sh # 从本仓库 checkout 安装到 profile(web / headless 等),bundle 声明自动加入组合层 dsh plugin --profile web add /path/to/dsh-git-identity dsh plugin --profile headless add /path/to/dsh-git-identity # 验证 dsh --profile web --dump-config | grep git-identity ``` 安装后需重启目标 profile 的 DSH 进程(组合层变更不参与 HMR 热更新)。 ## 身份解析优先级 1. 插件配置 `{ name, email }`(显式钉死,最稳;未登录 gh 时可在此配置) 2. gh CLI 登录账号(`gh api user`) 3. 启动环境的 `GIT_AUTHOR_NAME` / `GIT_AUTHOR_EMAIL` 4. `git config --global user.name` / `user.email` 兜底 全部解析不到时只告警、不注入,绝不凭空编造身份。 ## 配置 ```yaml # 在 bundle 的 patch 里给行加 config(可选;不配置则按上述优先级自动解析) - insert:

阅读完整 README仓库未声明许可,使用前请先与作者确认。

dsh-git-identity DSH 插件常见问题

如何安装 git-identity 插件?

克隆本仓库到本地,然后运行 `dsh plugin --profile <profile> add /path/to/dsh-git-identity`。例如,添加到 web profile:`dsh plugin --profile web add /path/to/dsh-git-identity`。安装后需要重启该 profile 的 DSH 进程。

它能在 headless profile 下工作吗?

可以,您可以在任何 profile(web、headless 等)上安装,只需在安装命令中指定 profile 名称。插件会管理该 profile 会话内所有 git 提交的作者身份。

如果没有 gh CLI 登录怎么办?

如果 gh CLI 未登录,插件会依次回退到环境变量 `GIT_AUTHOR_NAME` 和 `GIT_AUTHOR_EMAIL`,然后到 `git config --global user.name` 和 `user.email`。如果都没有设置,插件会告警并不注入任何身份,提交可能使用系统默认身份。

我可以在插件配置中手动设置特定的名称和邮箱吗?

可以,您可以在 bundle 的 patch 文件中为插件配置明确的 `name` 和 `email`。这将具有最高优先级,覆盖所有其他来源。具体示例请参考 README 的配置部分。

安装或更新插件后需要重启 DSH 吗?

是的,profile bundle 的变更不支持热更新(HMR)。您必须重启安装了该插件的 profile 对应的 DSH 进程。可以通过运行 `dsh --profile <profile> --dump-config | grep git-identity` 验证插件是否已加载。