子模块

概述

“Git 子模块<https://git-scm.com/book/en/v2/Git-Tools-Submodules>”_ 允许您将其他 Git 项目集成到代码中,而无需复制粘贴其所有代码。

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

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

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

如果将私有仓库添加为分支中的子模块,则需要在 Odoo.sh 项目设置和仓库设置中配置部署密钥。否则,将不允许 Odoo.sh 下载它们。该过程在:ref:’设置>子模块<odoosh-gettingstarted-settings-submodules>’一</odoosh-gettingstarted-settings-submodules>章中有详细说明。

添加子模块

带 Odoo.sh(简单)

警告

目前,无法使用此方法添加 ****储库。不过,你可以这样做:ref:with Git <odoosh-advanced-submodules-withgit>。</odoosh-advanced-submodules-withgit>

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

在右上角,单击“子模块”按钮,然后单击“运行”

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

将显示带有窗体的对话框。按如下方式填写输入:

  • 存储库 URL:存储库的 SSH URL。

  • 分支:要使用的分支。

  • 路径:要在分支中添加此子模块的文件夹。

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

在 Github 上,您可以使用存储库的 克隆或下载 按钮获取存储库 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>:<用户名/repository.git>*由您要添加为子模块的存储库的SSH URL组成,

  • <branch> 由您要在上面的存储库中使用的分支,</branch>

  • <path> 由要在其中添加此子模块的文件夹。</path>

提交并推送更改:

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

更换

  • <remote> 按要在其上推送更改的存储库。对于标准 Git 设置,这是 origin。</remote>

  • <branch> 按要推送更改的分支。最有可能是您在第一步中使用的分支:code:git checkout。</branch>

您可以阅读“git-scm.com 文档<https://git-scm.com/book/en/v2/Git-Tools-Submodules>”_ 以获取有关 Git 子模块的更多详细信息。例如,如果您想更新子模块以使其具有最新版本,则可以按照“拉入上游更改<https://git-scm.com/book/en/v2/Git-Tools-Submodules#_pulling_in_upstream_changes_from_the_submodule_remote>”一章进行操作。

忽略模块

如果要添加包含大量模块的存储库,则可能需要忽略其中一些模块,以防自动安装任何模块。为此,您可以在子模块文件夹前面加上 :code:’.’。平台将忽略此文件夹,您可以通过从另一个文件夹创建指向它们的符号链接来手动选择模块。