LoserFox/dsh-git-identity
DSH 插件:git 提交固定使用环境自身作者身份(优先 gh CLI 登录账号,GitHub noreply 邮箱),GIT_AUTHOR_*/GIT_COMMITTER_* 环境变量注入压过一切 git config
Listed
7
Git
Bundle verified
What it does
Pin Git commits to the environment's own author identity; env-var injection overrides all `git config` settings.
Best for
- DSH environments that need every Git commit to use a fixed, environment-specific author and committer identity.
- Users who want identity resolved from explicit configuration, the authenticated GitHub CLI account, environment variables, or global Git configuration.
Not ideal for
- Environments where no identity can be resolved from configuration, GitHub CLI, environment variables, or global Git settings; the plugin only warns and does not invent one.
- Workflows that must preserve repository-specific `git config` identities, because injected Git environment variables take precedence.
README
git-identity
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 系统)
# 从本仓库 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 热更新)。
身份解析优先级
- 插件配置
{ name, email }(显式钉死,最稳;未登录 gh 时可在此配置) - gh CLI 登录账号(
gh api user) - 启动环境的
GIT_AUTHOR_NAME/GIT_AUTHOR_EMAIL -
git config --global user.name/user.email兜底
全部解析不到时只告警、不注入,绝不凭空编造身份。
配置
# 在 bundle 的 patch 里给行加 config(可选;不配置则按上述优先级自动解析)
- insert:
- id: git-identity
name: '@loserfox/git-identity'
config:
name: LoserFox
email: 57448027+LoserFox@users.noreply.github.com
开发
编辑 index.mjs 后无需构建(纯 ESM,零依赖)。package.json 的
dsh.bundle.patch 声明本包是一个 profile bundle;cordis.patch.yml 是它贡献的
组合层。
Frequently Asked QuestionsFAQ
Use the verified command dsh plugin --profile default add github:LoserFox/dsh-git-identity in a DSH-enabled shell. The command resolves the public package metadata and keeps the plugin attached to the catalog identity shown on this page.
Compatibility follows the bundle and profile status shown above. If a profile is not detected, keep the plugin disabled there and check the repository documentation before enabling it in production.
The GitHub link and activity metadata are the source of truth for releases and maintenance. Revisit this page after a new release to confirm the catalog has observed the latest version.