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
.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.yaml的users中。不存在则抛出Unknown user: alice. Available: ...。 - TTY 缺省 name:在 TTY 终端中,如果省略
<name>,会弹出交互式选择框列出所有可用用户,上下箭头选择后回车确认。 - 非 TTY 缺省 name:报错
Missing user name. Usage: repostack users su <name>。 - 副作用:创建或覆盖
.repostackrc文件,内容为user=<name>\n。 - 后续所有需要用户感知的命令(如
use、remove、sync等)都会读取此文件并合并该用户的配置覆盖。
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 | 读取 / 写入 / 删除 | su、rm/unset、无子命令模式 |
错误信息
| 场景 | 错误信息 |
|---|---|
su 缺少 name(非 TTY) | Missing user name. Usage: repostack users su <name> |
su 用户不存在 | Unknown user: <name>. Available: ... |
add 缺少 name | Missing user name. Usage: repostack users add <name> |
| 未知子命令 | Unknown users command: <command> + 可用列表 |
用户配置合并机制
当 .repostackrc 指向有效用户时,该用户在 repostack.yaml 中 users.<name>.repos 的定义会覆盖基础 repos 的对应字段。这意味着不同用户可以拥有不同的 source、branch、path 等配置。