زیرماژول‌ها

بررسی اجمالی

یک Git submodule به شما اجازه می‌دهد پروژه‌های Git دیگر را در کد خود یکپارچه کنید، بدون نیاز به copy-paste کل کد آن‌ها.

در واقع، ماژول‌های سفارشی شما می‌توانند به ماژول‌های مخازن دیگر وابسته باشند. در مورد Odoo، این ویژگی به شما اجازه می‌دهد ماژول‌هایی را از سایر مخازن Git به شاخه‌های مخزن خود اضافه کنید. افزودن این وابستگی‌ها در شاخهٔ شما از طریق زیرماژول‌ها، استقرار کد و سرورهای شما را آسان‌تر می‌کند، زیرا می‌توانید مخازن افزوده‌شده به‌عنوان زیرماژول را هم‌زمان با clone مخزن خود clone کنید.

علاوه بر این، می‌توانید شاخهٔ مخزن افزوده‌شده به‌عنوان زیرماژول را انتخاب کنید و کنترل revision موردنظر را در اختیار داشته باشید. این به عهدهٔ شما است که تصمیم بگیرید آیا می‌خواهید زیرماژول را به یک revision خاص pin کنید و چه زمانی می‌خواهید به یک revision جدیدتر به‌روزرسانی کنید.

در Odoo.sh، زیرماژول‌ها این امکان را به شما می‌دهند که از ماژول‌های موجود در سایر مخازن استفاده کنید و به آن‌ها وابسته باشید. پلتفرم تشخیص می‌دهد که شما ماژول‌هایی را از طریق زیرماژول‌ها به شاخه‌های خود اضافه کرده‌اید و به‌صورت خودکار آن‌ها را به addons path شما اضافه می‌کند تا بتوانید آن‌ها را در پایگاه‌های داده خود نصب کنید.

اگر مخازن خصوصی را به‌عنوان زیرماژول در شاخه‌های خود اضافه می‌کنید، باید یک deploy key در تنظیمات پروژهٔ Odoo.sh خود و در تنظیمات مخزن خود پیکربندی کنید. در غیر این صورت Odoo.sh اجازهٔ دانلود آن‌ها را نخواهد داشت. این روال در فصل Settings > Submodules به‌تفصیل شرح داده شده است.

افزودن یک زیرماژول

با Odoo.sh (ساده)

هشدار

در حال حاضر، افزودن مخازن خصوصی با این روش امکان‌پذیر نیست. با این حال می‌توانید این کار را با Git انجام دهید.

در Odoo.sh، در نمای شاخه‌های پروژهٔ خود، شاخه‌ای را که می‌خواهید زیرماژول به آن اضافه کنید انتخاب کنید.

در گوشهٔ بالا سمت راست، روی دکمهٔ Submodule و سپس روی Run کلیک کنید.

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

یک گفتگو با یک فرم نمایش داده می‌شود. ورودی‌ها را به شکل زیر پر کنید:

  • مخزن URL: نشانی SSH مخزن.

  • شاخه: شاخه‌ای که می‌خواهید استفاده کنید.

  • Path: پوشه‌ای که می‌خواهید این زیرماژول را در شاخهٔ خود به آن اضافه کنید.

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

در GitHub، می‌توانید URL مخزن را از دکمهٔ Clone or download مخزن دریافت کنید. حتماً از SSH استفاده کنید.

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

با Git (پیشرفته)

در یک ترمینال، در پوشه‌ای که مخزن Git شما در آن clone شده، شاخه‌ای را که می‌خواهید زیرماژول به آن اضافه کنید برداشت کنید:

$ git checkout <branch>

سپس با استفاده از دستور زیر زیرماژول را اضافه کنید:

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

جایگزینی

  • <git@yourprovider.com>:<username/repository.git> را با URL از نوع SSH مخزنی که می‌خواهید به‌عنوان زیرماژول اضافه کنید جایگزین کنید،

  • <شاخه> را با شاخه‌ای که می‌خواهید در مخزن بالا استفاده کنید جایگزین کنید،

  • <path> را با پوشه‌ای که می‌خواهید این زیرماژول را به آن اضافه کنید جایگزین کنید.

تغییرات خود را commit و push کنید:

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

جایگزینی

  • <remote> را با مخزنی که می‌خواهید تغییرات خود را به آن push کنید جایگزین کنید. در تنظیمات استاندارد Git، این مخزن origin است.

  • <شاخه> را با شاخه‌ای که می‌خواهید تغییرات خود را به آن push کنید جایگزین کنید. به‌احتمال زیاد همان شاخه‌ای که در گام اول روی آن git checkout کرده‌اید.

می‌توانید برای جزئیات بیشتر دربارهٔ زیرماژول‌های Git، مستندات git-scm.com را بخوانید. برای مثال، اگر می‌خواهید زیرماژول‌های خود را به آخرین revision آن‌ها به‌روزرسانی کنید، می‌توانید فصل Pulling in Upstream changes را دنبال کنید.

نادیده گرفتن ماژول‌ها

اگر در حال افزودن مخزنی هستید که شامل ماژول‌های زیادی است، ممکن است بخواهید برخی از آن‌ها را نادیده بگیرید، در صورتی که برخی به‌صورت خودکار نصب شوند. برای این کار می‌توانید پوشهٔ زیرماژول خود را با . پیشوند دهید. پلتفرم این پوشه را نادیده می‌گیرد و شما می‌توانید ماژول‌های خود را با ایجاد symlink به آن‌ها از پوشهٔ دیگر انتخاب کنید.