repostack users [command] [name]

管理 stack 的用户配置。

# 交互信息模式(无子命令)
repostack users

# 子命令
repostack users ls
repostack users su <name>
repostack users add <name>
repostack users rm
repostack users unset

执行流程(无子命令)

读取 repostack.yaml 获取已定义的用户列表。

读取 .repostackrc 获取当前用户。

TTY 环境:进入交互式菜单,提供以下选项:
  • List users:列出可用用户
  • Switch user:选择并切换到指定用户
  • Unset user:删除 .repostackrc

非 TTY 环境:输出当前用户状态以及可用用户列表,并显示后续可用命令。

如果没有定义任何用户,打印黄色警告并提供手动编辑 repostack.yaml 的示例模板。

子命令详解

users ls

列出 repostack.yaml 中定义的所有用户。

repostack users ls
  • 如果用户列表为空,提示 No users defined in this stack.

users su <name>

切换到指定用户。

repostack users su alice
  • 验证:检查 name 是否存在于 repostack.yamlusers 中。不存在则抛出 Unknown user: alice. Available: ...
  • TTY 缺省 name:在 TTY 终端中,如果省略 <name>,会弹出交互式选择框列出所有可用用户,上下箭头选择后回车确认。
  • 非 TTY 缺省 name:报错 Missing user name. Usage: repostack users su <name>
  • 副作用:创建或覆盖 .repostackrc 文件,内容为 user=<name>\n
  • 后续所有需要用户感知的命令(如 useremovesync 等)都会读取此文件并合并该用户的配置覆盖。

users add <name>

添加新用户。

repostack users add bob
  • 当前状态:尚未实现。
  • 如果未提供 name,报错:Missing user name. Usage: repostack users add <name>
  • 如果提供了 name,输出黄色警告:Not implemented yet. Please edit repostack.yaml manually.,并以 exit code 1 退出。

users rm / users unset

取消当前用户选择。

repostack users rm
repostack users unset
  • 这两个子命令是别名,行为完全一致。
  • 副作用:删除 .repostackrc 文件(如果存在)。
  • 删除后,如果 repostack.yaml 中定义了 users,则后续命令会再次要求你选择用户。

涉及文件

文件操作子命令
repostack.yaml读取所有
.repostackrc读取 / 写入 / 删除surm/unset、无子命令模式

错误信息

场景错误信息
su 缺少 name(非 TTY)Missing user name. Usage: repostack users su <name>
su 用户不存在Unknown user: <name>. Available: ...
add 缺少 nameMissing user name. Usage: repostack users add <name>
未知子命令Unknown users command: <command> + 可用列表

用户配置合并机制

.repostackrc 指向有效用户时,该用户在 repostack.yamlusers.<name>.repos 的定义会覆盖基础 repos 的对应字段。这意味着不同用户可以拥有不同的 sourcebranchpath 等配置。