尧图精选

git-bug bridge auth show 命令详解:查看桥接凭据的完整指南

🕒 发布时间:2026/9/15 22:51:58 📁 来源:尧图网络
git-bug bridge auth show 命令详解查看桥接凭据的完整指南【免费下载链接】git-bugDistributed, offline-first bug tracker embedded in git项目地址: https://gitcode.com/GitHub_Trending/gi/git-buggit-bug bridge auth show是 git-bug 分布式 bug 追踪器内嵌于 Git中用于显示单条桥接认证凭据credential详情的命令。当你在 Git 仓库中通过git-bug bridge auth add-token存储了 GitHub、GitLab、Jira 等外部 bug 追踪器的访问令牌后可以使用本命令按 ID或 ID 前缀精确查看某条凭据的目标平台、类型、创建时间、令牌值与附加元数据是排查桥接推送/拉取认证问题时的核心诊断工具。读完本文你将掌握该命令的完整用法、输出字段含义及其底层的凭据存储与加载机制。命令概览git-bug bridge auth show属于git-bug bridge auth命令族该命令族用于管理所有已知的桥接认证凭据。官方命令文档doc/md/git-bug_bridge_auth_show.md给出的基本用法如下git-bug bridge auth show [flags]选项-h, --help help for show该命令仅有一个-h/--help帮助选项本身不提供额外参数标志但它要求恰好一个位置参数即要查看的凭据 ID 或 ID 前缀。命令层级与上下文show是auth子命令树中的一员。从 commands/bridge/bridge_auth.go 的源码可见git-bug bridge auth一共挂载了三个子命令cmd.AddCommand(newBridgeAuthAddTokenCommand(env)) cmd.AddCommand(newBridgeAuthRm(env)) cmd.AddCommand(newBridgeAuthShow(env))对应关系子命令用途git-bug bridge auth列出所有已知的桥接认证凭据git-bug bridge auth add-token [TOKEN]存储一个新的令牌git-bug bridge auth show显示单条认证凭据详情git-bug bridge auth rm删除一条凭据从 commands/bridge/bridge_auth_show.go 的定义可以看到show命令有以下关键行为PreRunE: execenv.LoadBackend(env)执行前加载 git-bug 后端仓库缓存环境RunE: execenv.CloseBackend(...)执行完成后自动关闭后端保证资源释放Args: cobra.ExactArgs(1)严格要求传入恰好一个位置参数——凭据 ID 或其前缀ValidArgsFunction: completion.BridgeAuth(env)为show提供 shell 补全按下 Tab 即可列出当前仓库中已存储的凭据 ID。凭据 ID 参数支持前缀匹配show的位置参数接受凭据 ID 或 ID 前缀。其底层调用是 bridge/core/auth/credential.go 中的LoadWithPrefixfunc LoadWithPrefix(repo repository.RepoKeyring, prefix string) (Credential, error) { keys, err : repo.Keyring().Keys() ... for _, key : range keys { if !strings.HasPrefix(key, keyringKeyPrefixprefix) { continue } ... } if len(matching) 1 { return nil, NewErrMultipleMatchCredential(ids) } if len(matching) 0 { return nil, ErrCredentialNotExist } return matching[0], nil }前缀匹配遵循如下规则无匹配返回ErrCredentialNotExistcredential doesnt exist提示该凭据不存在多个匹配返回ErrMultipleMatch错误并列出所有匹配的凭据 ID提示参数需要更精确恰好一个匹配返回该凭据。因此在实际使用中可以省略凭据 ID 的尾部只要不引起歧义。例如某个凭据 ID 为a1b2c3d4...可以直接执行git-bug bridge auth show a1b2。配合 shell 补全见 commands/completion/helper_completion.goshow会在输入时通过auth.List(env.Backend)动态列出所有凭据 ID 作为候选值无需手动记忆冗长的完整 ID。输出字段解析runBridgeAuthShowcommands/bridge/bridge_auth_show.go的执行逻辑如下cred, err : auth.LoadWithPrefix(env.Repo, args[0]) ... env.Out.Printf(Id: %s\n, cred.ID()) env.Out.Printf(Target: %s\n, cred.Target()) env.Out.Printf(Kind: %s\n, cred.Kind()) env.Out.Printf(Creation: %s\n, cred.CreateTime().Format(time.RFC822)) switch cred : cred.(type) { case *auth.Token: env.Out.Printf(Value: %s\n, cred.Value) } env.Out.Println(Metadata:) meta : make([]string, 0, len(cred.Metadata())) for key, value : range cred.Metadata() { meta append(meta, fmt.Sprintf( %s -- %s\n, key, value)) } sort.Strings(meta) env.Out.Print(strings.Join(meta, ))典型的输出形如Id: 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae Target: github Kind: token Creation: 15 Sep 26 02:29 0000 Value: ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Metadata: login -- octocat各字段含义如下字段说明Id凭据的唯一标识符SHA-256 十六进制摘要详见下文凭据 ID 的计算方式Target桥接目标平台即github、gitlab、jira等参见bridge.Targets()Kind凭据类型token、login或login-password详见下文凭据类型Creation凭据创建时间格式为 RFC 822如15 Sep 26 02:29 0000Value令牌值仅当凭据类型为token时显示Metadata附加的键值对元数据按键名排序输出每行以 4 空格缩进凭据 ID 的计算方式凭据 ID 并非随机生成的序列号而是对关键字段的 SHA-256 摘要。以最常见的令牌凭据为例bridge/core/auth/token.go 中func (t *Token) ID() entity.Id { h : sha256.New() _, _ h.Write(t.salt) _, _ h.Write([]byte(t.target)) _, _ h.Write([]byte(t.Value)) return entity.Id(fmt.Sprintf(%x, h.Sum(nil))) }即ID SHA-256(salt || target || value)。其中salt是创建凭据时通过crypto/rand生成的 16 字节随机盐见 bridge/core/auth/credential_base.go。这意味着即使两个用户使用完全相同的令牌值其凭据 ID 也因盐不同而不同ID 具有确定性同一凭据在任意机器上加载时计算出的 ID 一致可用于跨环境核验使用盐参与哈希可以避免通过 ID 反推令牌内容。凭据类型Kind与存储格式show输出的Kind字段取值来自 bridge/core/auth/credential.goconst ( KindToken CredentialKind token KindLogin CredentialKind login KindLoginPassword CredentialKind login-password )tokenAPI 访问令牌如 GitHub Personal Access Token是add-token命令存储的类型login仅包含登录名用户名的凭据login-password同时包含登录名与密码的凭据多用于不支持 OAuth 令牌的老式 API。show命令的源码通过类型断言只对*auth.Token输出Value字段switch cred : cred.(type) { case *auth.Token: env.Out.Printf(Value: %s\n, cred.Value) }因此当Kind为login或login-password时输出中不会出现Value行仅显示Id / Target / Kind / Creation / Metadata。底层存储加密文件 keyring凭据并非存放在 git 仓库内而是存储在操作系统用户配置目录下的 keyring 中。从 repository/keyring.go 可见git-bug 默认使用99designs/keyring的文件后端FileBackend存储目录~/.config/git-bug/keyring/通过os.UserConfigDir()解析服务名git-bug文件使用固定口令git-bug加密目的是防止通用文件扫描器直接读取敏感内容文件本身的权限保护依赖操作系统的用户目录权限机制。凭据的序列化格式为 JSON map键名规则见 bridge/core/auth/credential.goauth-id → keyring 中的条目 Key kind → 凭据类型 target → 目标平台 createtime → Unix 时间戳 salt → base64 编码的 16 字节盐 meta.key → 元数据项前缀 meta. value → 令牌值仅 token 类型存储逻辑在Storebridge/core/auth/credential.go若盐长度不为 16 字节会直接 panic随后将通用字段kind、target、createtime、salt与类型特有字段如 token 的 value以及所有meta.前缀元数据合并为 JSON写入 keyring。元数据字段login 与 base-urlshow输出的Metadata区域包含凭据的附加信息。git-bug 预定义了两个元数据键bridge/core/auth/credential.goMetaKeyLogin login MetaKeyBaseURL base-urllogin远程 bug 追踪器上的登录名。使用add-token存储令牌时通过--login指定见 commands/bridge/bridge_auth_addtoken.gotoken.SetMetadata(auth.MetaKeyLogin, opts.login)该登录名还会同步写入 git-bug 用户身份的元数据中作为桥接时匹配身份与凭据的依据bridge.LoginMetaKey见 bridge/bridges.go。base-url部分桥接如 GitLab 自托管实例需要的服务地址。此外各桥接实现可以在注册时见 bridge/core/bridge.go通过impl.LoginMetaKey()注入自己的元数据键。典型使用流程结合add-token、show、auth与rm的完整凭据生命周期如下存储令牌目标为 github登录名 octocatgit-bug bridge auth add-token --target github --login octocat若不加位置参数[TOKEN]命令会从 stdin 读取令牌值在交互式终端中会先提示Enter the token:。列出全部凭据获取 IDgit-bug bridge auth输出每行包含 ID青色、目标平台黄色左填充对齐到 10 字符、类型品红、令牌值与排序后的元数据。查看单条凭据详情git-bug bridge auth show ID 或 ID 前缀例如git-bug bridge auth show 2c26。若前缀有歧义会报 multiple match 错误并列出候选 ID。删除凭据git-bug bridge auth rm ID 或 ID 前缀底层同样调用LoadWithPrefix定位凭据后经auth.Remove删除见 commands/bridge/bridge_auth_rm.go。常见错误与排查credential doesnt exist传入的 ID 或前缀没有匹配任何已存储凭据。可先执行git-bug bridge auth确认当前 keyring 中实际存在的凭据 ID。multiple credentials matching ...前缀过短命中了多条凭据。将参数补充到足以唯一区分的长度即可。unknown target通常出现在add-token阶段--target的取值必须属于bridge.Targets()返回的已注册桥接目标github、gitlab、jira、launchpad等show阶段不会触发此错误。missing value令牌值为空时Token.Validate()会拒绝存储见 bridge/core/auth/token.goshow阶段不会触发此错误。需要说明的是show仅从本地 keyring 读取并展示凭据不会向远程 bug 追踪器发起任何网络请求也不会校验令牌是否仍然有效。若怀疑令牌已失效应结合git-bug bridge pull/git-bug bridge push的实际报错或直接查看目标平台的令牌状态页面确认。小结git-bug bridge auth show是桥接认证凭据管理中最基础的只读命令它以单一 ID 为入口输出凭据的类型、目标、创建时间、令牌值与元数据并通过前缀匹配与 shell 补全降低使用门槛。理解其背后的 keyring 文件存储、LoadWithPrefix前缀解析逻辑与凭据 ID 的 SHA-256 计算方式有助于在跨机器同步 git-bug 配置、排查桥接认证失败时快速定位问题。相关完整实现可继续阅读 commands/bridge/bridge_auth_show.go、bridge/core/auth/credential.go 与 repository/keyring.go。【免费下载链接】git-bugDistributed, offline-first bug tracker embedded in git项目地址: https://gitcode.com/GitHub_Trending/gi/git-bug创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →