feat(ginit): 新增一键初始化本地 Git 仓库命令

`quicommit ginit`(别名 `gi`)离线完成仓库起步:用 git2 建库并确立初始分支、
写最简 README.md、按根目录标志文件装配 .gitignore、按 --add 添加远程,
`--profile` 可选套用已有 Git 配置。在已有仓库上重复执行只补齐缺失项:绝不覆盖
既有的 README.md/.gitignore、绝不改动已有 remote 的地址、不提供 --force、
不创建首个提交。边界取舍见 ADR 0006,命令命名见 ADR 0005。

实现落在新的 src/git/init.rs(9 个 git 层函数)与 src/commands/ginit.rs,
命令层不直接引用 git2,GitRepo 公开接口未改动,其余命令行为不变。
测试:src/git/init.rs 11 条单元测试、tests/ginit_tests.rs 18 条集成测试;
新增 35 个 ginit_* 消息覆盖 7 种语言。

另将 CONTEXT.md 与 docs/adr/ 纳入版本跟踪(.gitignore 放开 adr/ 与
CONTEXT.md 两条忽略规则);RAODMAP.md 除 ginit 条目外还包含此前未提交的
规划条目更新。
This commit is contained in:
2026-10-09 09:36:04 +08:00
parent ef64e7d844
commit c2f914307d
19 changed files with 2327 additions and 40 deletions

View File

@@ -7,11 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### ✨ 新功能
- 新增 `quicommit ginit`(别名 `gi`):一条命令完成本地 Git 仓库起步——建库、写最简 `README.md`、按根目录标志文件生成 `.gitignore`、确立初始分支、按 `--add` 添加远程,并可用 `--profile` 套用已有 Git 配置。命令全程离线,不创建首个提交,不覆盖已存在的 `README.md` 与 `.gitignore`;`--dry-run` 只预览,`--yes` 仅跳过确认
### 🐞 错误修复
- 修复 DeepSeek 默认 `base_url` 误带 `/v1` 后缀的问题:该后缀会使用于校验凭据的 `GET /user/balance` 被拼成 `/v1/user/balance` 而失败,并在生成前被笼统报为 `LLM provider 'deepseek' is not available`。默认地址改为 `https://api.deepseek.com`,与官方 API 路径一致;已有配置若显式写入过 `.../v1`,需用 `quicommit config set-llm deepseek` 重新选择或手动修改
### 📚 文档
- README(中/英文)DeepSeek 配置示例的 `--base-url` 同步去掉 `/v1`
- README(中/英文)命令参考新增 `quicommit ginit` 一行与 `ginit` 选项表
- 新增 ADR 0005(`init` 与 `ginit` 保持两个命令)与 ADR 0006(`ginit` 的产出边界);CONTEXT.md 补充 Repo init、Config init、Ecosystem marker、Initial branch 四个术语
- `.gitignore` 放开 `CONTEXT.md` 与 `adr/` 的忽略,使术语表与 ADR 进入版本跟踪
### 🔧 其他变更
- 新增 git 层 `src/git/init.rs`:`init_repo`、`apply_initial_branch`、`add_remote`、`open_repo_at`、`has_commits`、`is_bare`、`head_branch`、`configured_initial_branch`、`is_valid_remote_name`,全部走 git2 且不改动 `GitRepo` 的公开接口,命令层不直接引用 git2
- 新增 35 个 `ginit_*` 多语言消息,覆盖 7 种语言
- 新增 `tests/ginit_tests.rs` 的 18 个集成测试与 `src/git/init.rs` 的 11 个单元测试
## [0.8.1] - 2026-08-31