Submodules

Overzicht

Met een Git-submodule kun je andere Git-projecten in je code integreren, zonder dat je al hun code hoeft te kopiëren en plakken .

Je aangepaste modules kunnen inderdaad afhankelijk zijn van modules uit andere opslagplaatsen. Wat Odoo betreft, kunt je met deze functie modules van andere Git-repository’s toevoegen aan de vertakkingen van jouw repository. Het toevoegen van deze afhankelijkheden in jouw branche via submodules maakt de implementatie van jouw code en servers eenvoudiger, omdat je de als submodules toegevoegde repository’s kunt klonen op hetzelfde moment dat je jouw eigen repository kloont.

Bovendien kunt je de tak van de repository kiezen die als submodule is toegevoegd en heeft je de controle over de gewenste revisie. Het is aan jou om te beslissen of je de submodule aan een specifieke revisie wilt vastzetten en wanneer je wilt updaten naar een nieuwere revisie.

In Odoo.sh geven de submodules je de mogelijkheid om modules te gebruiken en ervan afhankelijk te zijn die beschikbaar zijn in andere repositories. Het platform zal detecteren dat je modules hebt toegevoegd via submodules in de branches en deze automatisch aan jouw add-onspad toevoegen, zodat je ze in jouw databases kunt installeren.

Als je privérepository’s als submodules in de branches toevoegt, moet je een implementatiesleutel configureren in de Odoo.sh-projectinstellingen en in jouw repository-instellingen. Anders mag Odoo.sh ze niet downloaden. De procedure wordt gedetailleerd beschreven in het hoofdstuk :ref:`Instellingen > Submodules<odoosh-gettingstarted-settings-submodules> `.

Een submodule toevoegen

Met Odoo.sh (eenvoudig)

Waarschuwing

Voorlopig is het niet mogelijk om met deze methode privé repository’s toe te voegen. Je kunt dit toch doen :ref:`met Git<odoosh-advanced-submodules-withgit> `.

Op Odoo.sh, in de vertakkingenweergave van jouw project, kies je de vertakking waarin je een submodule wilt toevoegen.

Klik rechtsboven op de knop Submodule en vervolgens op Uitvoeren.

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

Er wordt een dialoogvenster met een formulier weergegeven. Vul de invoer als volgt in:

  • Repository-URL: De SSH-URL van de repository.

  • Filiaal: Het filiaal dat je wilt gebruiken.

  • Pad: De map waarin je deze submodule in je branch wilt toevoegen.

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

Op Github kunt je de repository-URL verkrijgen met de knop Klonen of downloaden van de repository. Zorg ervoor dat je SSH gebruikt.

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

Met Git (geavanceerd)

In een terminal, in de map waar je Git-repository is gekloond, check je de branch uit waarin je een submodule wilt toevoegen:

$ git checkout <branch>

Voeg vervolgens de submodule toe met behulp van de onderstaande opdracht:

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

Vervangen

  • <git@uwprovider.com>:<gebruikersnaam/repository.git> door de SSH-URL van de repository die je als submodule wilt toevoegen,

  • *<branch> * per branch die je wilt gebruiken in de bovenstaande repository,

  • *<path> * door de map waarin je deze submodule wilt toevoegen.

Leg je wijzigingen vast en push ze:

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

Vervangen

  • <remote>door de repository waarop je je wijzigingen wilt pushen. Voor een standaard Git-installatie is dit origin.

  • <branch>door de branch waarop je je wijzigingen wilt pushen. Hoogstwaarschijnlijk de branch die je in de eerste stap op git checkout hebt gebruikt.

Je kunt de git-scm.com documentatie lezen voor meer details over de Git-submodules. Als je bijvoorbeeld jouw submodules wilt bijwerken zodat ze de laatste revisie hebben, kunt je het hoofdstuk ‘Upstream-wijzigingen binnenhalen <https://git-scm.com/book/en/v2/Git-Tools-Submodules# volgen. _pulling_in_upstream_changes_from_the_submodule_remote>`_.

Negeer modules

Als je een repository toevoegt die veel modules bevat, wilt je misschien enkele daarvan negeren voor het geval er een is die automatisch wordt geïnstalleerd. Om dit te doen, kunt je jouw submodulemap vooraf laten gaan door een .. Het platform negeert deze map en je kunt jouw modules handmatig kiezen door er vanuit een andere map symlinks naar te maken.