本文最后更新于 17 天前,其中的信息可能已经有所发展或是发生改变。
一、方案详细描述
架构设计
本方案通过 裸仓库、管理员工作目录 和 生产目录 实现代码协作与自动化部署,确保开发与生产环境隔离。目录结构如下:
/mnt/odoo/odoo17/custom/addons/
├── aams.git # 裸仓库(开发者推送目标,存储所有分支)
├── aams_worktree # 管理员工作目录(用于合并分支)
└── aams # 生产目录(实际运行代码,由钩子自动同步)
目录 | 用途 |
aams.git | 中央仓库,开发者推送/拉取分支,仅管理员可以操作main 分支 |
aams_worktree | 管理员本地工作区,用于合并分支、解决冲突 |
aams | 生产环境代码,用钩子自动从aams.git 同步,禁止直接修改 |
角色权限:
角色 | 权限 |
开发者 | 1. 推送/拉取个人分支 2. 禁止操作 main 分支 |
管理员 | 1. 合并分支到main 2. 推送 main 分支触发同步钩子3. 管理钩子脚本等 |
开发管理流程
- 开发者推送分支:将代码推送到裸仓库的个人分支(如
dev_myname
)。 - 管理员合并分支:在工作目录中将
dev_myname
合并到main
。 - 触发同步:推送
main
分支到裸仓库,触发钩子自动同步到生产目录并重启服务。
二、配置与使用指南
1. 开发者配置与操作
环境准备
- 克隆仓库
#bash
git clone user@server:/mnt/odoo/odoo17/custom/addons/aams.git
cd aams