修复认证凭据 fallback 配置目录不一致 #133

Merged
wbtiger merged 1 commits from Mengz/gitlink-cli:mengz/auth-config-dir-fallback into master 2026-06-08 02:23:07 +08:00
Contributor

本次 PR 修复认证凭据 fallback 存储与主配置目录不一致的问题。gitlink-cli 的配置文件已经支持 GITLINK_CONFIG_DIR,但系统 Keychain 不可用时,认证模块仍固定把凭据写到用户 home 下的 ~/.config/gitlink-cli/credentials,这会让 CI、Windows 测试、Agent 沙箱和多账号隔离场景出现“配置目录已隔离但凭据仍读写真实用户目录”的问题,也是此前本地全量测试中 cmd/authinternal/auth 在 Windows 环境反复失败的直接原因之一。

实现上将文件凭据路径统一改为复用 internal/config.ConfigDir():设置 GITLINK_CONFIG_DIR 时 fallback 凭据保存到 $GITLINK_CONFIG_DIR/credentials,未设置时保持原有默认路径不变。同时让 fallback 文件不存在时的 auth logout 幂等成功,避免用户已经没有本地凭据时退出登录反而报错。测试同步改成使用 GITLINK_CONFIG_DIR 隔离临时凭据目录,并覆盖默认路径、文件创建、保存/读取/删除、Keychain 不可用 fallback、无凭据登出等场景。

文档同步更新 README、README.zh-CN、gitlink-shared Skill 和 doc/changes/auth-config-dir-fallback.md,明确 fallback 凭据目录与 GITLINK_CONFIG_DIR 的关系。已完成本地验证:go test ./internal/auth ./cmd/auth 通过,go build ./... 通过,git diff --check 通过,乱码扫描通过,go test ./... 全量通过。

本次 PR 修复认证凭据 fallback 存储与主配置目录不一致的问题。gitlink-cli 的配置文件已经支持 `GITLINK_CONFIG_DIR`,但系统 Keychain 不可用时,认证模块仍固定把凭据写到用户 home 下的 `~/.config/gitlink-cli/credentials`,这会让 CI、Windows 测试、Agent 沙箱和多账号隔离场景出现“配置目录已隔离但凭据仍读写真实用户目录”的问题,也是此前本地全量测试中 `cmd/auth` 与 `internal/auth` 在 Windows 环境反复失败的直接原因之一。 实现上将文件凭据路径统一改为复用 `internal/config.ConfigDir()`:设置 `GITLINK_CONFIG_DIR` 时 fallback 凭据保存到 `$GITLINK_CONFIG_DIR/credentials`,未设置时保持原有默认路径不变。同时让 fallback 文件不存在时的 `auth logout` 幂等成功,避免用户已经没有本地凭据时退出登录反而报错。测试同步改成使用 `GITLINK_CONFIG_DIR` 隔离临时凭据目录,并覆盖默认路径、文件创建、保存/读取/删除、Keychain 不可用 fallback、无凭据登出等场景。 文档同步更新 README、README.zh-CN、gitlink-shared Skill 和 `doc/changes/auth-config-dir-fallback.md`,明确 fallback 凭据目录与 `GITLINK_CONFIG_DIR` 的关系。已完成本地验证:`go test ./internal/auth ./cmd/auth` 通过,`go build ./...` 通过,`git diff --check` 通过,乱码扫描通过,`go test ./...` 全量通过。
Mengz added 1 commit 2026-06-06 18:42:58 +08:00
wbtiger merged commit 03a9d7a942 into master 2026-06-08 02:23:07 +08:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Gitlink/gitlink-cli#133
No description provided.