在Odoo.sh中管理第三方仓库(如OCA)的最佳更新方式?
在Odoo.sh上更新OCA子模块仓库的最佳实践
直接进入src/user/OCA/repository-name执行git pull不推荐,因为Odoo.sh依赖Git子模块的引用关联来同步部署环境,这种本地操作会导致主仓库的子模块哈希引用与本地子模块代码不一致,后续部署会覆盖你的本地更新,且无法同步到线上环境。
正确的更新步骤
- 登录Odoo.sh项目的Shell控制台(通过项目页面的「Shell」按钮进入)
- 切换到用户主仓库目录:
cd ~/src/user - 拉取主仓库的最新代码:
git pull - 更新指定的OCA子模块到上游最新版本:
若要批量更新所有OCA子模块,可使用:git submodule update --remote OCA/repository-namegit submodule update --remote OCA/* - 提交子模块的引用更新到主仓库:
git add OCA/repository-name git commit -m "Update OCA [repository-name] to latest upstream" git push
关键实践注意事项
- 先测后更:更新子模块后,务必先在测试分支(如staging)部署验证,确认模块与Odoo 15企业版兼容、无运行报错后,再推送到生产环境
- 锁定分支版本:如果不想默认拉取上游主分支,可修改主仓库的
.gitmodules文件,给对应OCA子模块添加分支配置(以15.0分支为例):
之后执行[submodule "OCA/repository-name"] path = OCA/repository-name url = https://github.com/OCA/repository-name.git branch = 15.0git submodule update --remote会自动拉取指定分支的最新代码 - 冲突处理:若主仓库的子模块哈希与上游更新冲突,先进入子模块目录解决冲突,再提交到主仓库
- 批量更新脚本:维护多个OCA子模块时,可使用脚本批量更新(需注意兼容性风险):
cd ~/src/user git submodule foreach --recursive "git pull origin 15.0" git add OCA/ git commit -m "Update all OCA modules to latest 15.0" git push
内容的提问来源于stack exchange,提问作者forvas
相关产品推荐
相关产品推荐

