repostack init
初始化当前目录为 stack root。
repostack init [options]
选项
| 选项 | 简写 | 说明 |
|---|---|---|
--yes | -y | 如果当前目录不是 Git 仓库,自动初始化 |
执行流程
检查 repostack.yaml- 若已存在:跳过创建,命令对此文件是幂等的。
- 若不存在:写入初始配置模板(
version: 1,空的 repos 和 views)。
version: 1,空的 repos 和 views)。检查当前目录是否为 Git 仓库- 通过
git rev-parse --show-toplevel 判断。 - 如果已经是 Git 仓库:不做任何操作。
- 如果不是 Git 仓库:
- 传入
--yes 时,自动执行 git init。 - 未传
--yes 时,静默跳过(不会交互式询问)。
git rev-parse --show-toplevel 判断。- 传入
--yes时,自动执行git init。 - 未传
--yes时,静默跳过(不会交互式询问)。
更新 .gitignore(仅当 .repostackrc 已存在时)- 若当前目录下存在
.repostackrc 文件:
- 读取
.gitignore(如果不存在则创建)。 - 若已包含
.repostackrc,不做修改。 - 否则在末尾追加一行
.repostackrc。
- 若
.repostackrc 不存在,则跳过此步骤。
.repostackrc 文件:
- 读取
.gitignore(如果不存在则创建)。 - 若已包含
.repostackrc,不做修改。 - 否则在末尾追加一行
.repostackrc。
.repostackrc 不存在,则跳过此步骤。涉及文件
| 文件 | 操作 | 条件 |
|---|---|---|
repostack.yaml | 读取(检查存在性) | 始终 |
repostack.yaml | 写入初始模板 | 仅当缺失时 |
.gitignore | 读取 / 追加 / 创建 | 仅当 .repostackrc 存在时 |
Git 操作
git rev-parse --show-toplevel(只读检测)git init(仅在--yes且当前目录非 Git 仓库时执行)
错误与边界情况
repostack.yaml的写入错误会向上抛出,导致命令失败。.gitignore的读写错误会被静默吞掉(返回false,不中断命令)。- 如果目录已经初始化过,多次运行
repostack init是安全的(幂等的),仅当.repostackrc存在时才会再次确认.gitignore。
示例
# 全自动初始化(推荐用于新仓库)
repostack init --yes
# 只创建配置,手动控制 Git
repostack init
git init # 自己初始化 Git