子模块

概览

一个 Git 子模块 允许您将其他 Git 项目集成到您的代码中,而无需复制粘贴它们的所有代码。

实际上,您的自定义模块可以依赖于其他存储库中的模块。关于Odoo,此功能允许您将其他Git存储库中的模块添加到您的存储库的分支中。通过子模块在您的分支中添加这些依赖项可以使您的代码和服务器部署更加容易,因为您可以在克隆自己的存储库的同时克隆添加为子模块的存储库。

此外,您可以选择作为子模块添加的存储库的分支,并且您可以控制您想要的修订版本。您可以决定是否将子模块固定到特定的修订版本,并在何时更新到新的修订版本。

在Odoo.sh中,子模块使您有可能使用和依赖于其他存储库中可用的模块。平台将检测到您通过子模块添加了模块到您的分支中,并自动将它们添加到您的插件路径中,以便您可以在您的数据库中安装它们。

如果您在分支中添加私有存储库作为子模块,您需要在您的Odoo.sh项目设置和存储库设置中配置部署密钥。否则,Odoo.sh将无法下载它们。该过程在章节 :ref:`Settings > Submodules <odoosh-gettingstarted-settings-submodules>`中有详细说明。

添加子模块

使用Odoo.sh(简单版)

警告

目前无法使用此方法添加 私有 存储库。但是,您仍然可以通过 使用Git 来实现。

在Odoo.sh上,进入您的项目的分支视图,在其中选择您想要添加子模块的分支。

在右上角,点击 Submodule 按钮,然后点击 Run

../../../_images/advanced-submodules-button.png

弹出一个带有表单的对话框。请按以下方式填写输入项:

  • 仓库 URL:仓库的 SSH URL。

  • 分支:您想要使用的分支。

  • 路径:您想要将此子模块添加到您的分支中的文件夹。

../../../_images/advanced-submodules-dialog.png

在 Github 上,您可以通过仓库的 Clone or download 按钮获取仓库的 URL。请确保 使用 SSH

../../../_images/advanced-submodules-github-sshurl.png

使用 Git(高级)

在终端中,进入你的 Git 仓库所在的文件夹,切换到你想要添加子模块的分支:

$ git checkout <branch>

然后,使用下面的命令添加子模块:

$ git submodule add -b <branch> <git@yourprovider.com>:<username/repository.git> <path>

替换

  • <git@yourprovider.com>:<username/repository.git> 通过 SSH URL 添加子模块的仓库,

  • <branch> 通过上述存储库中要使用的分支,

  • <path> 通过所需添加此子模块的文件夹。

提交并推送您的更改:

$ git commit -a && git push -u <remote> <branch>

替换

  • <remote> 通过你想要推送更改的仓库。对于标准的Git设置,这是 origin

  • <branch> 通过选择要推送更改的分支。很可能是你在第一步中使用 git checkout 的分支。

您可以阅读 git-scm.com 文档 了解有关 Git 子模块的更多详细信息。例如,如果您想要更新您的子模块以获取最新修订版本,您可以按照章节 Pulling in Upstream changes

忽略模块

如果您要添加包含许多模块的存储库,您可能希望忽略其中一些模块,以防有任何自动安装的模块。为此,您可以在子模块文件夹前加上一个 .。平台将忽略此文件夹,您可以通过从另一个文件夹创建符号链接来手动选择您的模块。