Files
cms-website/docs/evidence/env-baseline.md
T

103 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 阶段 0 环境版本基线(含 cms 只读基线与 gitignore 验证)
- **记录日期:** 2026-10-20 17:16 (UTC+8)
- **记录人:** Task 0.1(SiteForge Plan 1 / 阶段 0+1 首个任务)
- **用途:** 后续各阶段验收"cms 仓库未被修改"的对照证据。发现任何差异只报告用户,绝不执行 restore/checkout。
---
## 1. cms-one 当前 Git 状态
- 分支:`main`
- 当前 commit(`git rev-parse --short HEAD`):
```
0ead98f
```
> 记录时 cms-one 工作树另有一处与本任务无关的既有未提交改动:`M docs/superpowers/plans/2026-10-20-slice-foundation-phase0-1.md`(计划文档本身,不属于本任务提交范围)。
## 2. 环境版本(Step 1)
命令:`node -v && pnpm -v && docker --version && docker compose version`
```
v24.13.0
10.7.1
Docker version 29.2.1, build a5c7197
Docker Compose version v5.0.2
```
| 要求 | 实测 | 结论 |
|---|---|---|
| node ≥ v22.x | v24.13.0 | 通过 |
| pnpm ≥ 9.x | 10.7.1 | 通过 |
| docker 可用 | Docker version 29.2.1 | 通过 |
| compose 可用 | Docker Compose version v5.0.2 | 通过 |
## 3. cms 只读基线(Step 2,验收对照用)
对冻结仓库 `D:\project\cms` 只执行了以下两条只读命令,输出**原样**记录如下。
### 3.1 `git -C D:/project/cms rev-parse HEAD`
```
22a4377a1885983c4a2f5cdc11b06ae219cf81c0
```
### 3.2 `git -C D:/project/cms status --porcelain`
```
(无输出,退出码 0 —— 工作树干净)
```
> 计划中提示"cms 工作树可能存在既有未提交改动(如 about.astro)";实测当前 porcelain 输出为空、退出码 0,即 cms 工作树干净、无未提交改动。以本记录为准:后续验收时 HEAD 应仍为 `22a4377a...`,porcelain 应仍为空。
## 4. gitignore 验证(Step 3)
### 4.1 计划原命令:`git check-ignore -v storage artifacts .env`
```
.gitignore:12:.env .env
```
退出码 0。仅 `.env` 命中;`storage`、`artifacts` 无输出。原因:两者在 `.gitignore` 中为目录型规则(`storage/` 于第 10 行、`artifacts/` 于第 5 行),且这两个目录当前尚不存在——对不存在的裸路径名,git 无法判定其为目录,故目录型规则不命中。
### 4.2 带斜杠复验:`git check-ignore -v storage/ artifacts/ .env`
```
.gitignore:10:storage/ storage/
.gitignore:5:artifacts/ artifacts/
.gitignore:12:.env .env
```
退出码 0。三条路径各命中一条忽略规则,覆盖确认有效(目录一经创建即被忽略)。
### 4.3 `git add --dry-run .env.example`
```
fatal: pathspec '.env.example' did not match any files
```
退出码 128。原因:`.env.example` 文件当前尚不存在(属后续脚手架任务的产出),dry-run 无从执行,已如实记录。
### 4.4 反排除规则的等价验证:`git check-ignore -v .env.example`
```
.gitignore:14:!.env.example .env.example
```
check-ignore 按规则判定、不依赖文件存在:最终匹配的是第 14 行的否定规则 `!.env.example`,证明反排除生效——`.env.example` 一经创建即可正常 `git add`,不会被忽略。
### 4.5 结论
`.gitignore` 对 `storage/`(:10)、`artifacts/`(:5)、`.env`(:12)的忽略与 `!.env.example`(:14)的反排除均验证有效;唯一偏差是 4.3 的 dry-run 因文件不存在而无法执行,已用 4.4 等价验证补足。
## 5. PostgreSQL 镜像计划
- 使用固定 tag:**`postgres:16`**(不使用 `latest`)。
---
*本文件为验收证据,一经提交不应修改。*