Using and updating Submodules with Git and Odoo.sh

Introduction

This article discusses Git-Submodules and their use with Odoo.sh in combination with the Git-GUI "Tortoise Git".

For the purpose of this article it's important to distinguish between 3 definitions:

  • Original Submodule-Repository: The repository that is used to store code of a specific submodule. The functionality of the module is coded and pushed to that repository

  • Odoo.sh-linked Repository: The repository that is linked with the Odoo.sh-Account. It will contain the "Original Submodule-Repository" as a submodule

  • Submodule-Folder in Odoo.sh-linked Repository: Folder that contains code from "Original Submodule-Repository" and is stored within the "Odoo.sh-linked Repository"

What are Submodules

This is section gives a short introduction to Submodules - for detailled descriptions please refer to the Git documentation: Git Tools - Submodules

Git-Submodules offer a way to use code from another project or repository within your own codebase while still being able to pull code for that other repository regularly. 

Odoo.sh makes use of this Git functionality - submodules can be used to easily add new functionality from standard-repositories which can be reused for multiple Odoo.sh projects while still refering to the same codebase.

Private and Public Submodules

One has to distinguish between private und public submodules. Private Submodules need an extra step in order to make sure that Odoo.sh is able to pull code from that repository.

Adding Submodules to your Odoo.sh project

To add Submodules to Odoo.sh, please follow the following steps:

  • Only if the Submodule is private:

    • Go to the settings tab of your Odoo.sh project and add the link to your private Submodule under the "Submodules"-section.

    • Copy the generated Public Key and add it as "Deploy-Key" on Github (Settings => Deploy Keys)

  • For all Submodules:

    • Head to the "Branches"-Tab of Odoo.sh, select "Submodule" in the top-right-corner and click "Run on Odoo.sh". Enter the path to your repository again, select the right branch and click on "Add Submodule"

    • Odoo will issue a new build and after that you will be able to Update the App-list within the Odoo App-Installation page and install your new modules from your submodule.

Updating Submodules with Tortoise Git

Updating Submodules gave us some headaches, that's why we decided to document how we made it work.

First: Make changes to the Original Submodule-Repository

To make changes to your submodule, simply clone the original submodule-repository using Tortoise Git, apply your changes, commit and push.

Update the Submodule-Folder in the Odoo.sh-linked Repository

In order to load your changed code into the Odoo.sh-linked Repository and use it in Odoo.sh, you have to pull the new Code into the Odoo.sh-linked Repository.

This is where we struggled as we got some error-messages from Tortoise-Git. One of the most-common error-messages we got was:

Permission denied (publickey).
fatal: Could not read from remote repository.
or
fatal: Couldn't find remote ref

Here are the steps to make sure that you can pull code from your Submodule-Repo:

  • Make sure that your personal Github Account has at least read-permissions for the submodule-repository that you are trying to pull. You can do this by opening the repository on Github => Settings => Manage access and add your account as a team-member.

  • Create an SSH-key for your personal account: Open your personal profile settings (https://github.com/settings/profile) and head to "SSH and GPG keys".

  • Click on "New SSH key" and enter any title for the newly created SSH-Key

  • Next you would need to enter a key. To do so, open "Puttygen" (it should be located in the bin-folder of your TortoiseGit-Installation folder (C:\Program Files\TortoiseGit\bin)) and hit the "Generate"-Button.

  • Copy the generated key and paste it in your git-page within the "Key"-text box

  • Go back to Puttygen and Save both the Public and Private key to a folder of your choice.

  • Next, open Pageant (which should be located at C:\Program Files\TortoiseGit\bin if you are on a Windows-machine), click "Add key" and select your private-key-file that we created earlier.

  • Next, right click on your Odoo.sh-linked repository folder and select Tortoise-Git => Settings. In the following window head to Git => Remote , select the "origin"-Remote and add the Path to your private Key in the "Putty Key"-Form-field.

  • Additional Check: Make sure your Tortoise-Git-Client is using the right SSH-client. To do so open Tortoise-Git-Settings and go to the Network-Settings. Make sure that TortoiseGitPlink.exe is set as SSH-Client (C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe).

  • Now head to the Odoo.sh-linked repository and open the Submodule-Folder that you want to update. Right click anywhere and Select "Tortoise Git" => Pull. In the pop-up, make sure that you select the correct Remote Branch (this Branch-Name must be existent in the Original Submodule Repository (!!)).

  • If everything worked well, Tortoise Git will pull the updated code without any error-message.

  • Next, head back to the main-folder of the Odoo.sh-linked Repository, Commit and Push.

  • All done!

Anmelden to leave a comment
Odoo v14 und Outlook Kalender
Nutzen Sie die Möglichkeiten von Odoo und verbinden Sie Odoo mit Office 365