“这里没有理论派,只有能跑的命令和能用的方案。”—— DoubleMpd📌 前言在嵌入式软件开发中,版本管理比纯软件项目更加复杂——不仅有 C/C++ 源码,还有芯片 SDK、硬件配置文件、编译工具链、烧录脚本、硬件抽象层代码,甚至还有原理图和 PCB 设计文件(部分团队将硬件资料也纳入版本管理)。嵌入式开发还面临一个独特的挑战:编译环境极度依赖硬件平台。STM32、ESP32、NXP 等不同平台有不同的编译链(ARM-GCC、IAR、Keil),同一个团队可能同时维护多套工具链环境。当多人在同一套代码上并行开发时,提交规范的重要性尤为凸显。SVN(Subversion)凭借其集中式管理、权限控制精细、操作门槛低等优势,在嵌入式开发团队中仍有广泛应用。本文将从嵌入式开发的独特视角出发,系统梳理 SVN 代码提交规范的最佳实践。📂 一、嵌入式 SVN 目录结构规范嵌入式项目涉及的文件类型繁多,合理的目录结构是高效协作的基础。推荐采用以下规范:/embedded-project ├── trunk/ │ ├── firmware/ # 固件源码 │ │ ├── src/ # C/C++ 源文件 │ │ ├── inc/ # 头文件 │ │ ├── drivers/ # 外设驱动(按外设分类) │ │ │ ├── uart/ │ │ │ ├── spi/ │ │ │ ├── i2c/ │ │ │ └── gpio/ │ │ ├── bsp/ # 板级支持包 │ │ ├── rtos/ # RTOS 移植代码 │ │ └── middleware/ # 中间件(如 MQTT、TCP/IP) │ ├── hardware/ # 硬件相关 │ │ ├── schematics/ # 原理图 │ │ ├── pcb/ # PCB 设计 │ │ └── datasheets/ # 芯片手册 │ ├── tools/ # 开发工具与脚本 │ │ ├── build/ # 编译脚本(makefile、CMakeLists.txt) │ │ ├── flash/ # 烧录脚本(openocd、JLink) │ │ ├── debug/ # 调试脚本(GDB) │ │ └── test/ # 自动化测试脚本 │ ├── docs/ # 技术文档 │ │ ├── api/ # API 文档 │ │ ├── design/ # 设计文档 │ │ └── test-reports/ # 测试报告 │ └── libs/ # 第三方库(芯片 SDK、RTOS 源码) │ ├── stm32-sdk/ │ ├── esp-idf/ │ └── freertos/ ├── branches/ │ ├── feature/ # 功能分支 │ │ ├── feature/adc-driver/ │ │ └── feature/ble-mesh/ │ └── hotfix/ # 紧急修复分支 │ └── hotfix/power-leak/ └── tags/ ├── v1.0.0/ ├── v1.1.0-rc1/ └── v2.0.0/嵌入式特有目录说明:目录说明注意事项firmware/drivers/外设驱动代码按外设分类/