Adobe Commerce的代码管理最佳实践
最近更新: 2024年11月25日
- 主题:
- 最佳实践
创建对象:
- 有经验的
- 开发人员
本主题旨在帮助您确定是使用Git还是使用Composer分发自定义代码,并考虑版本管理、代码复杂性和依赖关系管理。
这些最佳实践最适合迁移和实施;而对于单模块开发,则不太适合。
受影响的产品和版本
所有受支持的版本,共:
- 云基础架构上的Adobe Commerce
- Adobe Commerce内部部署
定义
- 全局参考体系结构(GRA):也称为白色标签体系结构或通用代码库。 这是用于多实例设置的模块分发体系结构。
- 多实例设置:同一客户端对不同的地区或品牌使用不同的Adobe Commerce安装。 每个安装都具有共享模块以及独特的模块。
- 单实例设置:只有一个Adobe Commerce安装。 对于不同的测试环境,可以存在源代码的多个副本,但生产代码只有一个版本。
何时使用Git或编辑器
主要通过Git管理的代码 | 主要通过编辑器管理的代码 | |
---|---|---|
何时用于单实例设置 |
|
|
何时用于多实例设置 |
|
|
特征矩阵
功能 | Git | Composer |
---|---|---|
主代码存储库 | 所有代码都驻留在单个或几个Git存储库中 | 所有代码都驻留在Composer存储库中的包中 每个Composer包都由Git存储库表示 |
代码位置 | 开发发生在app/ 目录中 | 开发发生在vendor/ 目录中 |
核心升级管理 | 使用Composer安装和升级Adobe Commerce核心,结果在Git中提交 | 使用编辑器安装和升级Adobe Commerce核心;结果在Git中提交 |
第三方模块管理 | 第三方模块是通过Marketplace或packagist.org安装在vendor/ 中的。 否则,它们安装在app/ 中 | 所有第三方模块都安装在vendor/ 目录中 |
版本 | 正在释放的特征是git merge 和git pull 或git checkout 命令 | 正在释放的特征是composer update 和git pull 或git checkout 命令 |
Git存储库的数量 | 少数 | 许多 |
开发复杂性 | 简单 | 复杂 |
拉取请求复杂性 | 简单 | 复杂 |
代码审查复杂性 | 简单 | 简单 |
开发/QA/UAT环境更新复杂性 | 简单 | 复杂 |
GRA支持 |
|
|
模块可以自动安装外部库 |
|
|
GRA合成中的灵活性 |
|
|
模块依赖关系管理 |
module.xml ,功能有限
|
composer.json 进行完全依赖关系管理
|
模块版本控制 |
|
|
需要付费服务 | Git存储库 | Git存储库、私人打包员(每年600±元) |
可能与Jira集成Bitbucket |
|
|
对可立即安装的代码的更改 |
|
|
要避免的解决方案
-
针对您的模块 组合编辑器和
app/code
从而导致在项目中同时使用这两种代码管理样式的所有缺点。 它增加了不必要的复杂性、不稳定和缺乏灵活性。
例如:
- 向开发团队解释Git和编辑器工作流(而不是其中的一个)。
- 在
app/code
中安装不兼容的模块,因为没有任何内容可阻止发生这种情况。 - 将模块从
app/code
移动到编辑器(或反之)比较麻烦,尤其是对于正在进行的开发。
-
Satis包管理器
私人包客每年±600欧元。 这一成本是整个GRA的总和,而不是每个品牌。 不要尝试使用免费解决方案Satis来避免这些成本。 每当您将提交推送到Git时,Satis都不会自动更新您的包。 此外,Satis没有内置授权。 必须维护Web服务器才能运行Satis。 最终,您将花费大量的Private Packagist订阅费用来维护Satis。
-
从Git开始,然后移至编辑器
在项目开始时选择代码管理方法。 在持续开发的情况下从Git切换到编辑器或反之,过程非常繁琐,可能会导致代码丢失和或修订历史记录丢失。
recommendation-more-help
754cbbf3-3a3c-4af3-b6ce-9d34390f3a60