Files
Horldsence fd71b83e3a reference: 早先那版 C 写的装甲板固件(ESP-IDF 工程)
`armor/` 是它的 Rust 改写版,这一份留着当参考:ADC 阈值的 2000 就是从它标定出来的
(`.env.example` 里那句 "same as the reference firmware" 指的就是它),而且它的 README
记着实测设备与 MAC,换硬件时是有用的现场记录。

只收了 20 个源文件。它自带的 `.gitignore` 已经排掉 `build/`(211 MB 的 ESP-IDF 构建产物)
与生成的 `sdkconfig`,所以仓库里不会多出这些东西。

两处顺带处理:
- `reference/armor/.git` 是一个**空的**仓库壳(`git init` 过,零提交、零 remote、零 ref),
  而外层 git 正因为它的存在而拒绝索引 `reference/` 下的任何文件
  (`error: 'reference/armor/' does not have a commit checked out`)。它被挪到
  `desktop/.dev/backup/reference-armor-git`(可逆,且该目录已被忽略),不是删除。
- 它的 README 指着 `../armor-platformio-backup/`,那份备份并不存在。改成明说"没有进仓库",
  免得以后有人照着找一个不存在的目录。

另外把 `/docs/` 加进 .gitignore:那是工作区里另起的一个 Astro 文档站,与本仓库无关。
2026-10-14 19:45:15 +08:00

210 lines
8.2 KiB
Plaintext
Raw Permalink 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.
# =============================================================================
# armor — ESP32-C3 / ESP-IDF v6.1 工程专用 .gitignore
# -----------------------------------------------------------------------------
# 取舍原则
# 1) 只忽略「本机生成物 + 本机专有配置 + 编辑器/系统杂物」;
# 源码、构建脚本、分区表、可复现配置一律入库。
# 2) 能用 "/" 锚定就用锚定模式,避免将来新增同名目录时被误伤。
# 3) 每段都写明理由,后人可据此判断能否删改。
# 4) 语法提醒:.gitignore 的 "#" 注释必须独占一行,不能写在模式后面;
# 行尾空格会被静默丢弃(或被当成模式的一部分),也不要加。
#
# 自检
# git status --short # 期望只列出应该入库的源文件
# git check-ignore -v <路径> # 查看某路径被哪条规则命中
# =============================================================================
# =============================================================================
# 1. ESP-IDF 构建输出(体积最大,本工作区约 17 MB,必须忽略)
# =============================================================================
# idf.py 默认在工程根目录生成 build/:CMake/Ninja 缓存、.o、静态库、固件
# 镜像、flasher_args.json、compile_commands.json 全在里面。
# 本工程路径是纯 ASCII,不会触发 idf.ps1 的「非 ASCII 路径 -> 外置构建目录」
# 逻辑,所以 build/ 就落在工程内。
/build/
# 其它常见构建目录命名:多配置构建、CMake 预设、CLion
/build-*/
/cmake-build-*/
# 仅当 IDF_BUILD_DIR 被指向工程内部时才会出现
# (idf.ps1 的默认兜底是 <盘符>:\esp-idf-build\armor,位于仓库之外)
/esp-idf-build/
# clangd --background-index 的索引缓存(.vscode 里启用了该选项)
/.cache/
# 根目录下零散的 CMake/Ninja 缓存(正常应在 build/ 内,保险起见)
/.ninja_deps
/.ninja_log
/CMakeCache.txt
/CMakeFiles/
# =============================================================================
# 2. ESP-IDF 生成的本机配置
# =============================================================================
# sdkconfig : menuconfig/构建时自动写出,代表「本机当前状态」,每台机器都可能不同
# sdkconfig.old : 上一次配置的备份
# 可复现的那份是 sdkconfig.defaults(已生成,见第 9 节),所以这两个都忽略。
/sdkconfig
/sdkconfig.old
# 提示:ESP-IDF 工具在 Windows 上写 sdkconfig / sdkconfig.defaults 用的是 CRLF,
# 这是工具行为、无需干预 —— 入库行尾由 .gitattributes 统一成 LF,
# 本地暂时出现 CRLF 不会让 git status 变脏(已实测)。
# =============================================================================
# 3. IDF Component Manager(引入 idf_component.yml 后才会出现)
# =============================================================================
# managed_components/ 是下载到本地的第三方组件副本,官方文档明确说它
# 「通常不纳入版本控制」;dependencies.lock 由工具自动求解生成、禁止手改。
# 若团队要锁定依赖版本,可注释掉 dependencies.lock 并把它提交入库。
/managed_components/
/dependencies.lock
# 工具导出的编译数据库副本(真正那份在 build/ 里,已随 build/ 忽略)
/compile_commands.json
# =============================================================================
# 4. 固件产物与运行日志
# =============================================================================
# 只锚定根目录,避免误伤将来放进 assets/ 之类的素材
/*.bin
/*.elf
/*.map
/*.hex
# README 里 monitor 打印的 CSV,属于采集到的运行数据,不入库
/logs/
*.log
# =============================================================================
# 5. 密钥类文件 —— 提交即泄密,且很难从历史里挽回
# =============================================================================
# 安全启动签名私钥 / Flash 加密密钥 / 证书私钥。
# 若仓库确实需要存放公开证书,请把下面的通配收窄成具体文件名。
*.pem
*.key
*.p12
*.pfx
# =============================================================================
# 6. 编辑器 / IDE(本机专有,往往含绝对路径)
# =============================================================================
# VS Code + ESP-IDF 扩展自动生成。当前 .vscode/settings.json 里是
# C:\esp\v6.1\esp-idf、d:\宣筹\...\build、COM10 这类本机绝对路径,
# 提交上去只会误导别人。
/.vscode/*
# 想共享「推荐扩展列表」时,取消下一行注释(上一行的 /.vscode/* 必须保留)
!/.vscode/extensions.json
/.idea/
/.vs/
*.code-workspace
*.sublime-project
*.sublime-workspace
# 编辑器临时/交换文件
*.swp
*.swo
*~
.#*
\#*#
# =============================================================================
# 7. Python 与测试/覆盖率工具缓存(ESP-IDF 工具链脚本产物)
# =============================================================================
__pycache__/
*.py[cod]
.venv/
venv/
/.mypy_cache/
/.pytest_cache/
/.ruff_cache/
# pytest-embedded、单元测试与尺寸报告(ESP-IDF 自身仓库也忽略这些)
pytest-embedded/
pytest_embedded_log/
TEST_LOGS/
XUNIT_RESULT*.xml
build_summary_*.xml
app_info_*.txt
size_info*.txt
.manifest_sha
# 覆盖率
*.gcda
*.gcno
*.gcov
coverage.info
coverage_report/
# =============================================================================
# 8. 操作系统杂物
# =============================================================================
Thumbs.db
ehthumbs.db
desktop.ini
$RECYCLE.BIN/
.DS_Store
.AppleDouble
._*
*.lnk
# =============================================================================
# 9. 必须入库的文件(切勿加入忽略列表)
# =============================================================================
# CMakeLists.txt / main/CMakeLists.txt
# main/*.cpp main/*.hpp main/*.c main/*.h
# idf.ps1 构建入口(含非 ASCII 路径 workaround)
# partitions.csv 自定义分区表
# README.md 工程文档(移植要点与踩坑记录)
# .clangd 工程级 clangd 配置
# sdkconfig.defaults 可复现配置来源(由 idf.py save-defconfig 生成)
# .gitattributes 行尾(CRLF/LF)与文本/二进制归属策略
#
# 提醒:ESP-IDF 自身仓库的 .gitignore 会忽略 .clangd 和 .vscode/;
# 本工程故意保留 .clangd(它是为 clangd 去掉 -f*/-m* 的项目配置),
# 不要照抄 IDF 仓库的规则。
# =============================================================================
# 10. sdkconfig.defaults 与 sdkconfig 的关系(2026-10-14 核对并修复)
# =============================================================================
# 忽略 sdkconfig 的前提是 sdkconfig.defaults 存在且正确。核对时发现:
# * README「目录结构」里列的 sdkconfig.defaults 当时并不存在;
# * 当时的 sdkconfig(以及 build/config/sdkconfig.h)是
# CONFIG_PARTITION_TABLE_SINGLE_APP=y、CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y,
# 即用的是默认 single-app 分区表,partitions.csv 根本没有生效;
# * 而 README「实测验证结果」的 boot log 却是 4 MB flash + 2 MB factory 分区。
# 已按文档修正(4 MB flash + CONFIG_PARTITION_TABLE_CUSTOM=y)重新配置,
# 并用 `idf.py save-defconfig` 生成 sdkconfig.defaults,内容就是最小差异:
# CONFIG_IDF_TARGET="esp32c3"
# CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
# CONFIG_PARTITION_TABLE_CUSTOM=y
# (CONFIG_PARTITION_TABLE_CUSTOM_FILENAME 的 Kconfig 默认值本来就是
# "partitions.csv",所以 save-defconfig 不会重复写入。)
#
# 维护规则:
# * 改配置请改 sdkconfig.defaults(或 menuconfig 后重跑 save-defconfig),
# 不要把 sdkconfig 提交进来;
# * 想确认「相对 IDF 默认值改了什么」:重跑 idf.py save-defconfig 再看 diff;
# * 构建日志里分区表应为 nvs 0x9000 / phy_init 0xf000 / factory 0x10000 2M,
# 否则说明 defaults 没生效或 partitions.csv 没被采用。
# =============================================================================