Script integrate manifest git-repo

- Add sync repo with manifest xml
- sync repo print to show missing or added repo
- Release 1.0.0 manifest for prod
- Support generation manifest from script
- Separate prod/dev installation locally script
- Generate repo and keep old manifest configuration when update
- Move manifest in directory ./manifest/
- Many general fixes
This commit is contained in:
Mathieu Benoit 2020-06-22 22:36:54 -04:00
parent 293c1d2796
commit 8a11ab88c7
32 changed files with 1194 additions and 1128 deletions

4
.gitignore vendored
View file

@ -8,3 +8,7 @@ venv
config.conf
*.DS_Store
*.pyc
.repo
addons
odoo

0
.gitmodules vendored
View file

View file

@ -1,109 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<default revision="12.0"
remote="ERPLibre"
sync-c="true"
sync-j="4" />
<remote name="ERPLibre" fetch="https://github.com/ERPLibre/"/>
<remote name="MathBenTech" fetch="https://github.com/ERPLibre/" />
<remote name="muk" fetch="https://github.com/ERPLibre/" />
<remote name="Numigi" fetch="https://github.com/ERPLibre/" />
<remote name="OCA" fetch="https://github.com/ERPLibre/" />
<remote name="odoo" fetch="https://github.com/ERPLibre/" />
<remote name="odooaktiv" fetch="https://github.com/ERPLibre/" />
<remote name="openeducat" fetch="https://github.com/ERPLibre/" />
<remote name="SanteLibre" fetch="https://github.com/ERPLibre/" revision="master" />
<remote name="Smile" fetch="https://github.com/ERPLibre/" />
<project remote="odoo" name="odoo.git" path="odoo" groups="odoo" revision="12.0_feature_5_star_CRM" clone-depth="1" />
<project remote="ERPLibre" name="erplibre_addons.git" path="addons/ERPLibre_erplibre_addons" groups="addons" revision="master" />
<project remote="MathBenTech" name="development.git" path="addons/MathBenTech_development" groups="addons" />
<project remote="MathBenTech" name="odoo-business-spending-management-quebec-canada.git" path="addons/MathBenTech_quebec-canada" groups="addons" revision="stable_prod_12.0" />
<project remote="MathBenTech" name="scrummer.git" path="addons/MathBenTech_scrummer" groups="addons" />
<project remote="muk" name="muk_base.git" path="addons/muk-it_muk_base" groups="addons" />
<project remote="muk" name="muk_dms.git" path="addons/muk-it_muk_dms" groups="addons" />
<project remote="muk" name="muk_docs.git" path="addons/muk-it_muk_docs" groups="addons" />
<project remote="muk" name="muk_misc.git" path="addons/muk-it_muk_misc" groups="addons" />
<project remote="muk" name="muk_quality.git" path="addons/muk-it_muk_quality" groups="addons" />
<project remote="muk" name="muk_web.git" path="addons/muk-it_muk_web" groups="addons" />
<project remote="muk" name="muk_website.git" path="addons/muk-it_muk_website" groups="addons" />
<project remote="Numigi" name="odoo-base-addons.git" path="addons/Numigi_base-addons" groups="addons" />
<project remote="Numigi" name="odoo-entertainment-addons.git" path="addons/Numigi_entertainment-addons" groups="addons" />
<project remote="Numigi" name="odoo-git-addons.git" path="addons/Numigi_git-addons" groups="addons" />
<project remote="Numigi" name="odoo-hr-addons.git" path="addons/Numigi_hr-addons" groups="addons" />
<project remote="Numigi" name="odoo-partner-addons.git" path="addons/Numigi_partner-addons" groups="addons" />
<project remote="Numigi" name="odoo-product-addons.git" path="addons/Numigi_product-addons" groups="addons" />
<project remote="Numigi" name="odoo-project-addons.git" path="addons/Numigi_project-addons" groups="addons" />
<project remote="Numigi" name="odoo-purchase-addons.git" path="addons/Numigi_purchase-addons" groups="addons" />
<project remote="Numigi" name="odoo-stock-addons.git" path="addons/Numigi_stock-addons" groups="addons" />
<project remote="Numigi" name="odoo-survey-addons.git" path="addons/Numigi_survey-addons" groups="addons" />
<project remote="Numigi" name="odoo-timesheet-addons.git" path="addons/Numigi_timesheet-addons" groups="addons" />
<project remote="Numigi" name="odoo-web-addons.git" path="addons/Numigi_Numigi_web-addons" groups="addons" />
<project remote="OCA" name="account-analytic.git" path="addons/OCA_account-analytic" groups="addons" />
<project remote="OCA" name="account-budgeting.git" path="addons/OCA_account-budgeting" groups="addons" />
<project remote="OCA" name="account-closing.git" path="addons/OCA_account-closing" groups="addons" />
<project remote="OCA" name="account-consolidation.git" path="addons/OCA_account-consolidation" groups="addons" />
<project remote="OCA" name="account-financial-reporting.git" path="addons/OCA_financial-reporting" groups="addons" />
<project remote="OCA" name="account-financial-tools" path="addons/OCA_financial-t" groups="addons" />
<project remote="OCA" name="account-fiscal-rule.git" path="addons/OCA_fiscal-rule" groups="addons" />
<project remote="OCA" name="account-invoicing.git" path="addons/OCA_account-invoicing" groups="addons" />
<project remote="OCA" name="account-invoice-reporting.git" path="addons/OCA_invoice-reporting" groups="addons" />
<project remote="OCA" name="account-payment.git" path="addons/OCA_account-payment" groups="addons" />
<project remote="OCA" name="account-reconcile.git" path="addons/OCA_account-reconcile" groups="addons" />
<project remote="OCA" name="apps-store.git" path="addons/OCA_apps-store" groups="addons" />
<project remote="OCA" name="bank-payment.git" path="addons/OCA_bank-payment" groups="addons" />
<project remote="OCA" name="bank-statement-import.git" path="addons/OCA_statement-import" groups="addons" />
<project remote="OCA" name="brand.git" path="addons/OCA_OCA/brand" groups="addons" />
<project remote="OCA" name="business-requirement.git" path="addons/OCA_business-requirement" groups="addons" />
<project remote="OCA" name="commission.git" path="addons/OCA_OCA/commission" groups="addons" />
<project remote="OCA" name="community-data-files.git" path="addons/OCA_data-files" groups="addons" />
<project remote="OCA" name="connector-telephony.git" path="addons/OCA_connector-telephony" groups="addons" />
<project remote="OCA" name="contract.git" path="addons/OCA_contract" groups="addons" />
<project remote="OCA" name="credit-control.git" path="addons/OCA_credit-control" groups="addons" />
<project remote="OCA" name="currency.git" path="addons/OCA_currency" groups="addons" />
<project remote="OCA" name="data-protection.git" path="addons/OCA_data-protection" groups="addons" />
<project remote="OCA" name="donation.git" path="addons/OCA_donation" groups="addons" />
<project remote="OCA" name="e-commerce.git" path="addons/OCA_e-commerce" groups="addons" />
<project remote="OCA" name="edi.git" path="addons/OCA_edi" groups="addons" />
<project remote="OCA" name="event.git" path="addons/OCA_event" groups="addons" />
<project remote="OCA" name="helpdesk.git" path="addons/OCA_helpdesk" groups="addons" />
<project remote="OCA" name="hr.git" path="addons/OCA_hr" groups="addons" />
<project remote="OCA" name="knowledge.git" path="addons/OCA_knowledge" groups="addons" />
<project remote="OCA" name="l10n-canada.git" path="addons/OCA_l10n-canada" groups="addons" />
<project remote="OCA" name="maintenance.git" path="addons/OCA_maintenance" groups="addons" />
<project remote="OCA" name="management-system.git" path="addons/OCA_management-system" groups="addons" />
<project remote="OCA" name="manufacture.git" path="addons/OCA_manufacture" groups="addons" />
<project remote="OCA" name="margin-analysis.git" path="addons/OCA_margin-analysis" groups="addons" />
<project remote="OCA" name="mis-builder.git" path="addons/OCA_mis-builder" groups="addons" />
<project remote="OCA" name="multi-company.git" path="addons/OCA_multi-company" groups="addons" />
<project remote="OCA" name="partner-contact.git" path="addons/OCA_partner-contact" groups="addons" />
<project remote="OCA" name="pos.git" path="addons/OCA_OCA/pos" groups="addons" />
<project remote="OCA" name="product-attribute.git" path="addons/OCA_product-attribute" groups="addons" />
<project remote="OCA" name="product-pack.git" path="addons/OCA_product-pack" groups="addons" />
<project remote="OCA" name="product-variant.git" path="addons/OCA_product-variant" groups="addons" />
<project remote="OCA" name="project.git" path="addons/OCA_project" groups="addons" />
<project remote="OCA" name="project-reporting.git" path="addons/OCA_project-reporting" groups="addons" />
<project remote="OCA" name="purchase-workflow.git" path="addons/OCA_purchase-workflow" groups="addons" />
<project remote="OCA" name="queue.git" path="addons/OCA_queue" groups="addons" />
<project remote="OCA" name="reporting-engine.git" path="addons/OCA_reporting-engine" groups="addons" />
<project remote="OCA" name="sale-workflow.git" path="addons/OCA_sale-workflow" groups="addons" />
<project remote="OCA" name="server-auth.git" path="addons/OCA_server-auth" groups="addons" />
<project remote="OCA" name="server-brand.git" path="addons/OCA_server-brand" groups="addons" />
<project remote="OCA" name="server-env.git" path="addons/OCA_server-env" groups="addons" />
<project remote="OCA" name="server-tools.git" path="addons/OCA_server-tools" groups="addons" />
<project remote="OCA" name="server-ux.git" path="addons/OCA_server-ux" groups="addons" />
<project remote="OCA" name="social.git" path="addons/OCA_OCA/social" groups="addons" />
<project remote="OCA" name="stock-logistics-warehouse.git" path="addons/OCA_logistics-warehouse" groups="addons" />
<project remote="OCA" name="timesheet.git" path="addons/OCA_timesheet" groups="addons" />
<project remote="OCA" name="web.git" path="addons/OCA_web" groups="addons" />
<project remote="OCA" name="website.git" path="addons/OCA_website" groups="addons" />
<project remote="OCA" name="wms.git" path="addons/OCA_wms" groups="addons" />
<project remote="odooaktiv" name="QuotationRevision.git" path="addons/odooaktiv_QuotationRevision" groups="addons" />
<project remote="openeducat" name="openeducat_erp.git" path="addons/openeducat_openeducat_erp" groups="addons" />
<project remote="SanteLibre" name="santelibre_addons.git" path="addons/SanteLibre_santelibre_addons" groups="addons" />
<project remote="Smile" name="odoo_addons.git" path="addons/Smile_odoo_addons" groups="addons" />
</manifest>

View file

@ -1,110 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<default revision="12.0"
remote="ERPLibre"
sync-c="true"
sync-j="4" />
<remote name="ERPLibre" fetch="https://github.com/ERPLibre/"/>
<remote name="MathBenTech" fetch="https://github.com/ERPLibre/" />
<remote name="muk" fetch="https://github.com/ERPLibre/" />
<remote name="Numigi" fetch="https://github.com/ERPLibre/" />
<remote name="OCA" fetch="https://github.com/ERPLibre/" />
<remote name="odoo" fetch="https://github.com/ERPLibre/" />
<remote name="odooaktiv" fetch="https://github.com/ERPLibre/" />
<remote name="openeducat" fetch="https://github.com/ERPLibre/" />
<remote name="SanteLibre" fetch="https://github.com/ERPLibre/" revision="master" />
<remote name="Smile" fetch="https://github.com/ERPLibre/" />
<project remote="odoo" name="odoo.git" path="odoo" groups="odoo" revision="12.0_feature_5_star_CRM" clone-depth="1" />
<project remote="ERPLibre" name="erplibre_addons.git" path="addons/ERPLibre_erplibre_addons" groups="addons" revision="master" />
<project remote="MathBenTech" name="development.git" path="addons/MathBenTech_development" groups="addons" />
<project remote="MathBenTech" name="odoo-business-spending-management-quebec-canada.git" path="addons/MathBenTech_quebec-canada" groups="addons" revision="stable_prod_12.0" />
<project remote="MathBenTech" name="scrummer.git" path="addons/MathBenTech_scrummer" groups="addons" />
<project remote="muk" name="muk_base.git" path="addons/muk-it_muk_base" groups="addons" />
<project remote="muk" name="muk_dms.git" path="addons/muk-it_muk_dms" groups="addons" />
<project remote="muk" name="muk_docs.git" path="addons/muk-it_muk_docs" groups="addons" />
<project remote="muk" name="muk_misc.git" path="addons/muk-it_muk_misc" groups="addons" />
<project remote="muk" name="muk_quality.git" path="addons/muk-it_muk_quality" groups="addons" />
<project remote="muk" name="muk_web.git" path="addons/muk-it_muk_web" groups="addons" />
<project remote="muk" name="muk_website.git" path="addons/muk-it_muk_website" groups="addons" />
<project remote="Numigi" name="odoo-base-addons.git" path="addons/Numigi_base-addons" groups="addons" />
<project remote="Numigi" name="odoo-entertainment-addons.git" path="addons/Numigi_entertainment-addons" groups="addons" />
<project remote="Numigi" name="odoo-git-addons.git" path="addons/Numigi_git-addons" groups="addons" />
<project remote="Numigi" name="odoo-hr-addons.git" path="addons/Numigi_hr-addons" groups="addons" />
<project remote="Numigi" name="odoo-partner-addons.git" path="addons/Numigi_partner-addons" groups="addons" />
<project remote="Numigi" name="odoo-product-addons.git" path="addons/Numigi_product-addons" groups="addons" />
<project remote="Numigi" name="odoo-project-addons.git" path="addons/Numigi_project-addons" groups="addons" />
<project remote="Numigi" name="odoo-purchase-addons.git" path="addons/Numigi_purchase-addons" groups="addons" />
<project remote="Numigi" name="odoo-stock-addons.git" path="addons/Numigi_stock-addons" groups="addons" />
<project remote="Numigi" name="odoo-survey-addons.git" path="addons/Numigi_survey-addons" groups="addons" />
<project remote="Numigi" name="odoo-timesheet-addons.git" path="addons/Numigi_timesheet-addons" groups="addons" />
<project remote="Numigi" name="odoo-web-addons.git" path="addons/Numigi_Numigi_web-addons" groups="addons" />
<project remote="OCA" name="account-analytic.git" path="addons/OCA_account-analytic" groups="addons" />
<project remote="OCA" name="account-budgeting.git" path="addons/OCA_account-budgeting" groups="addons" />
<project remote="OCA" name="account-closing.git" path="addons/OCA_account-closing" groups="addons" />
<project remote="OCA" name="account-consolidation.git" path="addons/OCA_account-consolidation" groups="addons" />
<project remote="OCA" name="account-financial-reporting.git" path="addons/OCA_financial-reporting" groups="addons" />
<project remote="OCA" name="account-financial-tools" path="addons/OCA_financial-t" groups="addons" />
<project remote="OCA" name="account-fiscal-rule.git" path="addons/OCA_fiscal-rule" groups="addons" />
<project remote="OCA" name="account-invoicing.git" path="addons/OCA_account-invoicing" groups="addons" />
<project remote="OCA" name="account-invoice-reporting.git" path="addons/OCA_invoice-reporting" groups="addons" />
<project remote="OCA" name="account-payment.git" path="addons/OCA_account-payment" groups="addons" />
<project remote="OCA" name="account-reconcile.git" path="addons/OCA_account-reconcile" groups="addons" />
<project remote="OCA" name="apps-store.git" path="addons/OCA_apps-store" groups="addons" />
<project remote="OCA" name="bank-payment.git" path="addons/OCA_bank-payment" groups="addons" />
<project remote="OCA" name="bank-statement-import.git" path="addons/OCA_statement-import" groups="addons" />
<project remote="OCA" name="brand.git" path="addons/OCA_OCA/brand" groups="addons" />
<project remote="OCA" name="business-requirement.git" path="addons/OCA_business-requirement" groups="addons" />
<project remote="OCA" name="commission.git" path="addons/OCA_OCA/commission" groups="addons" />
<project remote="OCA" name="community-data-files.git" path="addons/OCA_data-files" groups="addons" />
<project remote="OCA" name="connector-telephony.git" path="addons/OCA_connector-telephony" groups="addons" />
<project remote="OCA" name="contract.git" path="addons/OCA_contract" groups="addons" />
<project remote="OCA" name="credit-control.git" path="addons/OCA_credit-control" groups="addons" />
<project remote="OCA" name="currency.git" path="addons/OCA_currency" groups="addons" />
<project remote="OCA" name="data-protection.git" path="addons/OCA_data-protection" groups="addons" />
<project remote="OCA" name="donation.git" path="addons/OCA_donation" groups="addons" />
<project remote="OCA" name="e-commerce.git" path="addons/OCA_e-commerce" groups="addons" />
<project remote="OCA" name="edi.git" path="addons/OCA_edi" groups="addons" />
<project remote="OCA" name="event.git" path="addons/OCA_event" groups="addons" />
<project remote="OCA" name="helpdesk.git" path="addons/OCA_helpdesk" groups="addons" />
<project remote="OCA" name="hr.git" path="addons/OCA_hr" groups="addons" />
<project remote="OCA" name="knowledge.git" path="addons/OCA_knowledge" groups="addons" />
<project remote="OCA" name="l10n-canada.git" path="addons/OCA_l10n-canada" groups="addons" />
<project remote="OCA" name="maintenance.git" path="addons/OCA_maintenance" groups="addons" />
<project remote="OCA" name="management-system.git" path="addons/OCA_management-system" groups="addons" />
<project remote="OCA" name="manufacture.git" path="addons/OCA_manufacture" groups="addons" />
<project remote="OCA" name="margin-analysis.git" path="addons/OCA_margin-analysis" groups="addons" />
<project remote="OCA" name="mis-builder.git" path="addons/OCA_mis-builder" groups="addons" />
<project remote="OCA" name="multi-company.git" path="addons/OCA_multi-company" groups="addons" />
<project remote="OCA" name="partner-contact.git" path="addons/OCA_partner-contact" groups="addons" />
<project remote="OCA" name="pos.git" path="addons/OCA_OCA/pos" groups="addons" />
<project remote="OCA" name="product-attribute.git" path="addons/OCA_product-attribute" groups="addons" />
<project remote="OCA" name="product-pack.git" path="addons/OCA_product-pack" groups="addons" />
<project remote="OCA" name="product-variant.git" path="addons/OCA_product-variant" groups="addons" />
<project remote="OCA" name="project.git" path="addons/OCA_project" groups="addons" />
<project remote="OCA" name="project-reporting.git" path="addons/OCA_project-reporting" groups="addons" />
<project remote="OCA" name="purchase-workflow.git" path="addons/OCA_purchase-workflow" groups="addons" />
<project remote="OCA" name="queue.git" path="addons/OCA_queue" groups="addons" />
<project remote="OCA" name="reporting-engine.git" path="addons/OCA_reporting-engine" groups="addons" />
<project remote="OCA" name="sale-workflow.git" path="addons/OCA_sale-workflow" groups="addons" />
<project remote="OCA" name="server-auth.git" path="addons/OCA_server-auth" groups="addons" />
<project remote="OCA" name="server-brand.git" path="addons/OCA_server-brand" groups="addons" />
<project remote="OCA" name="server-env.git" path="addons/OCA_server-env" groups="addons" />
<project remote="OCA" name="server-tools.git" path="addons/OCA_server-tools" groups="addons" />
<project remote="OCA" name="server-ux.git" path="addons/OCA_server-ux" groups="addons" />
<project remote="OCA" name="social.git" path="addons/OCA_OCA/social" groups="addons" />
<project remote="OCA" name="stock-logistics-warehouse.git" path="addons/OCA_logistics-warehouse" groups="addons" />
<project remote="OCA" name="timesheet.git" path="addons/OCA_timesheet" groups="addons" />
<project remote="OCA" name="web.git" path="addons/OCA_web" groups="addons" />
<project remote="OCA" name="website.git" path="addons/OCA_website" groups="addons" />
<project remote="OCA" name="wms.git" path="addons/OCA_wms" groups="addons" />
<project remote="odooaktiv" name="QuotationRevision.git" path="addons/odooaktiv_QuotationRevision" groups="addons" />
<project remote="openeducat" name="openeducat_erp.git" path="addons/openeducat_openeducat_erp" groups="addons" />
<project remote="SanteLibre" name="santelibre_addons.git" path="addons/SanteLibre_santelibre_addons" groups="addons" />
<project remote="Smile" name="odoo_addons.git" path="addons/Smile_odoo_addons" groups="addons" />
</manifest>

View file

@ -1,30 +1,23 @@
#!/bin/bash
################################################################################
# Script for installing Odoo on Ubuntu 14.04, 15.04, 16.04 and 18.04 (could be used for other version too)
# Author: Yenthe Van Ginneken
#-------------------------------------------------------------------------------
# This script will install Odoo on your Ubuntu 16.04 server. It can install multiple Odoo instances
# in one Ubuntu because of the different xmlrpc_ports
#-------------------------------------------------------------------------------
################################################################################
#!/usr/bin/env bash
OE_USER="odoo"
OE_HOME="/${OE_USER}"
OE_HOME_ODOO="${OE_HOME}/odoo"
OE_HOME_EXT="${OE_HOME_ODOO}/odoo"
EL_USER="erplibre"
EL_HOME="/${EL_USER}"
EL_HOME_ERPLIBRE="${EL_HOME}/erplibre"
EL_HOME_ODOO="${EL_HOME_ERPLIBRE}/odoo"
# The default port where this Odoo instance will run under (provided you use the command -c in the terminal)
# Set to true if you want to install it, false if you don't need it or have it already installed.
INSTALL_WKHTMLTOPDF="True"
# Set the default Odoo port (you still have to use -c /etc/odoo-server.conf for example to use this.)
OE_PORT="8069"
OE_LONGPOLLING_PORT="8072"
EL_INSTALL_WKHTMLTOPDF="True"
# Set the default Odoo port
EL_PORT="8069"
EL_LONGPOLLING_PORT="8072"
# set the superadmin password
OE_SUPERADMIN="admin"
OE_VERSION="stable_prod_12.0"
OE_CONFIG="${OE_USER}"
MINIMAL_ADDONS="False"
EL_SUPERADMIN="admin"
EL_CONFIG="${EL_USER}"
EL_MINIMAL_ADDONS="False"
# Set this to True if you want to install Nginx!
INSTALL_NGINX="True"
EL_INSTALL_NGINX="True"
# Set the website name
WEBSITE_NAME="_"
GITHUB_TOKEN=""
EL_WEBSITE_NAME="_"
EL_GITHUB_TOKEN=""
EL_MANIFEST_PROD="./manifest/default.xml"
EL_MANIFEST_DEV="./manifest/default.dev.xml"

103
manifest/default.dev.xml Normal file
View file

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="ERPLibre" fetch="https://github.com/ERPLibre/"/>
<remote name="MathBenTech" fetch="https://github.com/ERPLibre/"/>
<remote name="Numigi" fetch="https://github.com/ERPLibre/"/>
<remote name="OCA" fetch="https://github.com/ERPLibre/"/>
<remote name="SanteLibre" fetch="https://github.com/ERPLibre/"/>
<remote name="Smile-SA" fetch="https://github.com/ERPLibre/"/>
<remote name="muk-it" fetch="https://github.com/ERPLibre/"/>
<remote name="odoo" fetch="https://github.com/ERPLibre/"/>
<remote name="odooaktiv" fetch="https://github.com/ERPLibre/"/>
<remote name="openeducat" fetch="https://github.com/ERPLibre/"/>
<default remote="ERPLibre" revision="12.0" sync-j="4" sync-c="true"/>
<project name="QuotationRevision.git" path="addons/odooaktiv_QuotationRevision" remote="odooaktiv" groups="addons"/>
<project name="account-analytic.git" path="addons/OCA_account-analytic" remote="OCA" groups="addons"/>
<project name="account-budgeting.git" path="addons/OCA_account-budgeting" remote="OCA" groups="addons"/>
<project name="account-closing.git" path="addons/OCA_account-closing" remote="OCA" groups="addons"/>
<project name="account-consolidation.git" path="addons/OCA_account-consolidation" remote="OCA" groups="addons"/>
<project name="account-financial-reporting.git" path="addons/OCA_account-financial-reporting" remote="OCA" groups="addons"/>
<project name="account-financial-tools.git" path="addons/OCA_account-financial-tools" remote="OCA" groups="addons"/>
<project name="account-fiscal-rule.git" path="addons/OCA_account-fiscal-rule" remote="OCA" groups="addons"/>
<project name="account-invoice-reporting.git" path="addons/OCA_account-invoice-reporting" remote="OCA" groups="addons"/>
<project name="account-invoicing.git" path="addons/OCA_account-invoicing" remote="OCA" groups="addons"/>
<project name="account-payment.git" path="addons/OCA_account-payment" remote="OCA" groups="addons"/>
<project name="account-reconcile.git" path="addons/OCA_account-reconcile" remote="OCA" groups="addons"/>
<project name="apps-store.git" path="addons/OCA_apps-store" remote="OCA" groups="addons"/>
<project name="bank-payment.git" path="addons/OCA_bank-payment" remote="OCA" groups="addons"/>
<project name="bank-statement-import.git" path="addons/OCA_bank-statement-import" remote="OCA" groups="addons"/>
<project name="brand.git" path="addons/OCA_brand" remote="OCA" groups="addons"/>
<project name="business-requirement.git" path="addons/OCA_business-requirement" remote="OCA" groups="addons"/>
<project name="commission.git" path="addons/OCA_commission" remote="OCA" groups="addons"/>
<project name="community-data-files.git" path="addons/OCA_community-data-files" remote="OCA" groups="addons"/>
<project name="connector-telephony.git" path="addons/OCA_connector-telephony" remote="OCA" groups="addons"/>
<project name="contract.git" path="addons/OCA_contract" remote="OCA" groups="addons"/>
<project name="credit-control.git" path="addons/OCA_credit-control" remote="OCA" groups="addons"/>
<project name="currency.git" path="addons/OCA_currency" remote="OCA" groups="addons"/>
<project name="data-protection.git" path="addons/OCA_data-protection" remote="OCA" groups="addons"/>
<project name="development.git" path="addons/MathBenTech_development" remote="MathBenTech" groups="addons"/>
<project name="donation.git" path="addons/OCA_donation" remote="OCA" groups="addons"/>
<project name="e-commerce.git" path="addons/OCA_e-commerce" remote="OCA" groups="addons"/>
<project name="edi.git" path="addons/OCA_edi" remote="OCA" groups="addons"/>
<project name="erplibre_addons.git" path="addons/ERPLibre_erplibre_addons" remote="ERPLibre" groups="addons"/>
<project name="event.git" path="addons/OCA_event" remote="OCA" groups="addons"/>
<project name="helpdesk.git" path="addons/OCA_helpdesk" remote="OCA" groups="addons"/>
<project name="hr.git" path="addons/OCA_hr" remote="OCA" groups="addons"/>
<project name="knowledge.git" path="addons/OCA_knowledge" remote="OCA" groups="addons"/>
<project name="l10n-canada.git" path="addons/OCA_l10n-canada" remote="OCA" groups="addons"/>
<project name="maintenance.git" path="addons/OCA_maintenance" remote="OCA" groups="addons"/>
<project name="management-system.git" path="addons/OCA_management-system" remote="OCA" groups="addons"/>
<project name="manufacture.git" path="addons/OCA_manufacture" remote="OCA" groups="addons"/>
<project name="margin-analysis.git" path="addons/OCA_margin-analysis" remote="OCA" groups="addons"/>
<project name="mis-builder.git" path="addons/OCA_mis-builder" remote="OCA" groups="addons"/>
<project name="muk_base.git" path="addons/muk-it_muk_base" remote="muk-it" groups="addons"/>
<project name="muk_dms.git" path="addons/muk-it_muk_dms" remote="muk-it" groups="addons"/>
<project name="muk_docs.git" path="addons/muk-it_muk_docs" remote="muk-it" groups="addons"/>
<project name="muk_misc.git" path="addons/muk-it_muk_misc" remote="muk-it" groups="addons"/>
<project name="muk_quality.git" path="addons/muk-it_muk_quality" remote="muk-it" groups="addons"/>
<project name="muk_web.git" path="addons/muk-it_muk_web" remote="muk-it" groups="addons"/>
<project name="muk_website.git" path="addons/muk-it_muk_website" remote="muk-it" groups="addons"/>
<project name="multi-company.git" path="addons/OCA_multi-company" remote="OCA" groups="addons"/>
<project name="odoo-base-addons.git" path="addons/Numigi_odoo-base-addons" remote="Numigi" groups="addons"/>
<project name="odoo-business-spending-management-quebec-canada.git" path="addons/MathBenTech_odoo-business-spending-management-quebec-canada" remote="MathBenTech" revision="stable_prod_12.0" groups="addons"/>
<project name="odoo-entertainment-addons.git" path="addons/Numigi_odoo-entertainment-addons" remote="Numigi" groups="addons"/>
<project name="odoo-git-addons.git" path="addons/Numigi_odoo-git-addons" remote="Numigi" groups="addons"/>
<project name="odoo-hr-addons.git" path="addons/Numigi_odoo-hr-addons" remote="Numigi" groups="addons"/>
<project name="odoo-partner-addons.git" path="addons/Numigi_odoo-partner-addons" remote="Numigi" groups="addons"/>
<project name="odoo-product-addons.git" path="addons/Numigi_odoo-product-addons" remote="Numigi" groups="addons"/>
<project name="odoo-project-addons.git" path="addons/Numigi_odoo-project-addons" remote="Numigi" groups="addons"/>
<project name="odoo-purchase-addons.git" path="addons/Numigi_odoo-purchase-addons" remote="Numigi" groups="addons"/>
<project name="odoo-stock-addons.git" path="addons/Numigi_odoo-stock-addons" remote="Numigi" groups="addons"/>
<project name="odoo-survey-addons.git" path="addons/Numigi_odoo-survey-addons" remote="Numigi" groups="addons"/>
<project name="odoo-timesheet-addons.git" path="addons/Numigi_odoo-timesheet-addons" remote="Numigi" groups="addons"/>
<project name="odoo-web-addons.git" path="addons/Numigi_odoo-web-addons" remote="Numigi" groups="addons"/>
<project name="odoo.git" path="odoo" remote="odoo" revision="12.0_feature_5_star_CRM" clone-depth="1" groups="odoo"/>
<project name="odoo_addons.git" path="addons/Smile-SA_odoo_addons" remote="Smile-SA" groups="addons"/>
<project name="openeducat_erp.git" path="addons/openeducat_openeducat_erp" remote="openeducat" groups="addons"/>
<project name="partner-contact.git" path="addons/OCA_partner-contact" remote="OCA" groups="addons"/>
<project name="pos.git" path="addons/OCA_pos" remote="OCA" groups="addons"/>
<project name="product-attribute.git" path="addons/OCA_product-attribute" remote="OCA" groups="addons"/>
<project name="product-pack.git" path="addons/OCA_product-pack" remote="OCA" groups="addons"/>
<project name="product-variant.git" path="addons/OCA_product-variant" remote="OCA" groups="addons"/>
<project name="project-reporting.git" path="addons/OCA_project-reporting" remote="OCA" groups="addons"/>
<project name="project.git" path="addons/OCA_project" remote="OCA" groups="addons"/>
<project name="purchase-workflow.git" path="addons/OCA_purchase-workflow" remote="OCA" groups="addons"/>
<project name="queue.git" path="addons/OCA_queue" remote="OCA" groups="addons"/>
<project name="reporting-engine.git" path="addons/OCA_reporting-engine" remote="OCA" groups="addons"/>
<project name="sale-workflow.git" path="addons/OCA_sale-workflow" remote="OCA" groups="addons"/>
<project name="santelibre_addons.git" path="addons/SanteLibre_santelibre_addons" remote="SanteLibre" revision="master" groups="addons"/>
<project name="scrummer.git" path="addons/MathBenTech_scrummer" remote="MathBenTech" groups="addons"/>
<project name="server-auth.git" path="addons/OCA_server-auth" remote="OCA" groups="addons"/>
<project name="server-brand.git" path="addons/OCA_server-brand" remote="OCA" groups="addons"/>
<project name="server-env.git" path="addons/OCA_server-env" remote="OCA" groups="addons"/>
<project name="server-tools.git" path="addons/OCA_server-tools" remote="OCA" groups="addons"/>
<project name="server-ux.git" path="addons/OCA_server-ux" remote="OCA" groups="addons"/>
<project name="social.git" path="addons/OCA_social" remote="OCA" groups="addons"/>
<project name="stock-logistics-warehouse.git" path="addons/OCA_stock-logistics-warehouse" remote="OCA" groups="addons"/>
<project name="timesheet.git" path="addons/OCA_timesheet" remote="OCA" groups="addons"/>
<project name="web.git" path="addons/OCA_web" remote="OCA" groups="addons"/>
<project name="website.git" path="addons/OCA_website" remote="OCA" groups="addons"/>
<project name="wms.git" path="addons/OCA_wms" remote="OCA" groups="addons"/>
</manifest>

103
manifest/default.xml Normal file
View file

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="ERPLibre" fetch="https://github.com/ERPLibre/"/>
<remote name="MathBenTech" fetch="https://github.com/ERPLibre/"/>
<remote name="Numigi" fetch="https://github.com/ERPLibre/"/>
<remote name="OCA" fetch="https://github.com/ERPLibre/"/>
<remote name="SanteLibre" fetch="https://github.com/ERPLibre/"/>
<remote name="Smile-SA" fetch="https://github.com/ERPLibre/"/>
<remote name="muk-it" fetch="https://github.com/ERPLibre/"/>
<remote name="odoo" fetch="https://github.com/ERPLibre/"/>
<remote name="odooaktiv" fetch="https://github.com/ERPLibre/"/>
<remote name="openeducat" fetch="https://github.com/ERPLibre/"/>
<default remote="ERPLibre" revision="12.0" sync-j="4" sync-c="true"/>
<project name="QuotationRevision.git" path="addons/odooaktiv_QuotationRevision" remote="odooaktiv" revision="701438f9c59bd657de516d9ef4de1ba6167bf30b" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="account-analytic.git" path="addons/OCA_account-analytic" remote="OCA" revision="7ce9fe25a7c977c5338001bc32d58b1cadffe51e" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="account-budgeting.git" path="addons/OCA_account-budgeting" remote="OCA" revision="e175ffa84fb61f70de67a2732292e43bd490cefd" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="account-closing.git" path="addons/OCA_account-closing" remote="OCA" revision="40d40c73574bf65c91c879e0607b4ac455df06b2" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="account-consolidation.git" path="addons/OCA_account-consolidation" remote="OCA" revision="741fc50366bd70fceb88a2a3fcb0449b2582ed31" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="account-financial-reporting.git" path="addons/OCA_account-financial-reporting" remote="OCA" revision="1e0f8301ca015b3c4c456401bc30c5f211ccae3f" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="account-financial-tools.git" path="addons/OCA_account-financial-tools" remote="OCA" revision="9721abd4c9db653e1d009f8a023e9f750523989f" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="account-fiscal-rule.git" path="addons/OCA_account-fiscal-rule" remote="OCA" revision="f396ba6a2e2acebaaff579f0e6991b669812d64d" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="account-invoice-reporting.git" path="addons/OCA_account-invoice-reporting" remote="OCA" revision="320dd9fce4d212b2dcf5dc4447494964ad1e246d" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="account-invoicing.git" path="addons/OCA_account-invoicing" remote="OCA" revision="9db1c104341f422b8545c3f2906d83bcb69d46ac" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="account-payment.git" path="addons/OCA_account-payment" remote="OCA" revision="888debebd8e42c1ee5107577ca2f3bc5f38d72e1" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="account-reconcile.git" path="addons/OCA_account-reconcile" remote="OCA" revision="0390b112def3d362d95232d382317511616ee6dd" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="apps-store.git" path="addons/OCA_apps-store" remote="OCA" revision="022d24db4c6463f38b9f4452fe03c9fb8b3a44ce" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="bank-payment.git" path="addons/OCA_bank-payment" remote="OCA" revision="7e0e572fb4772c8ebacfe52d58c396bdbd9e01f9" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="bank-statement-import.git" path="addons/OCA_bank-statement-import" remote="OCA" revision="198306503b51371c8603fd8defef65fcd82bf954" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="brand.git" path="addons/OCA_brand" remote="OCA" revision="601a8c5c741b3035000f2337feab16325e6b9a49" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="business-requirement.git" path="addons/OCA_business-requirement" remote="OCA" revision="dd74e74583861b44c6120473ba0b56c90b887334" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="commission.git" path="addons/OCA_commission" remote="OCA" revision="e679120a6d8f910cba81d949ecddd7b89f48fc01" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="community-data-files.git" path="addons/OCA_community-data-files" remote="OCA" revision="2b17e5567d1bcb8ca377268615f209fdd57dc66e" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="connector-telephony.git" path="addons/OCA_connector-telephony" remote="OCA" revision="6d9df1037a97dbf791a7f0a717846a63144174bb" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="contract.git" path="addons/OCA_contract" remote="OCA" revision="3e531348cb51aeb2cc16c16ab8a2b693756ba47f" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="credit-control.git" path="addons/OCA_credit-control" remote="OCA" revision="a97496a829cadc0d9be07d7825e93062417ab670" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="currency.git" path="addons/OCA_currency" remote="OCA" revision="5c0d54e37789ecc24bebbe53fa56a92a492575bb" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="data-protection.git" path="addons/OCA_data-protection" remote="OCA" revision="ce4f334a1077b5c15d457f22daaa48b9f639409e" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="development.git" path="addons/MathBenTech_development" remote="MathBenTech" revision="097a5002dd6ec91512406f3add8bb7cad5372218" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="donation.git" path="addons/OCA_donation" remote="OCA" revision="aa6478a72c9673ad6458de19aa2362397c613fae" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="e-commerce.git" path="addons/OCA_e-commerce" remote="OCA" revision="d7c99e565f25b495b3c0d252f181d8df4490a757" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="edi.git" path="addons/OCA_edi" remote="OCA" revision="742b1316773f8a1b224e42c65c3c3a7685481a30" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="erplibre_addons.git" path="addons/ERPLibre_erplibre_addons" revision="e68263793556cc0ec0af91be612421613b5cf7a2" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="event.git" path="addons/OCA_event" remote="OCA" revision="e2bdf12c61e9967eeb9abc618c79ca43b464ea7f" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="helpdesk.git" path="addons/OCA_helpdesk" remote="OCA" revision="6b84f81c81ff3184526c0ca86ced7bbcdcc4c0b3" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="hr.git" path="addons/OCA_hr" remote="OCA" revision="4743acf7ab796ea3738743a44c62cd516126ec53" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="knowledge.git" path="addons/OCA_knowledge" remote="OCA" revision="9ae45f798bbefa854b03f612e22291ac1b95568d" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="l10n-canada.git" path="addons/OCA_l10n-canada" remote="OCA" revision="5680b485cdfa0b6f1c2f4e32356b5938a9752c00" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="maintenance.git" path="addons/OCA_maintenance" remote="OCA" revision="4e521ec35f6e8b66f86a62db644dadc9206b476e" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="management-system.git" path="addons/OCA_management-system" remote="OCA" revision="479afcc65ee29530e2bcaa7342f93b6783d14d97" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="manufacture.git" path="addons/OCA_manufacture" remote="OCA" revision="ce36844281754a75b527c4ace21837c8a16b75ab" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="margin-analysis.git" path="addons/OCA_margin-analysis" remote="OCA" revision="4a50437ecfa591a72e12255448d38d0fb1037a42" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="mis-builder.git" path="addons/OCA_mis-builder" remote="OCA" revision="5d7697296ad90794599373940e6fc6cead8ca1a2" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="muk_base.git" path="addons/muk-it_muk_base" remote="muk-it" revision="d888c9695292295a732fcdd4a7b9820978df5e7f" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="muk_dms.git" path="addons/muk-it_muk_dms" remote="muk-it" revision="020e604d635a229c09a07e839d95f8e37706606a" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="muk_docs.git" path="addons/muk-it_muk_docs" remote="muk-it" revision="a8ea02b9f00ae9fe5d2ea25ac43d23532cc11d45" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="muk_misc.git" path="addons/muk-it_muk_misc" remote="muk-it" revision="37b9d6dc20fa686a323057b160015bfc2c2c8143" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="muk_quality.git" path="addons/muk-it_muk_quality" remote="muk-it" revision="1a4c6f25c5e4fe0029d406d6283555bd23a44d27" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="muk_web.git" path="addons/muk-it_muk_web" remote="muk-it" revision="431d86d6694e846b407c84f00a31a10f0cf5b83b" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="muk_website.git" path="addons/muk-it_muk_website" remote="muk-it" revision="c1e6c1755d09562f66247832bd01a0d580c43e23" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="multi-company.git" path="addons/OCA_multi-company" remote="OCA" revision="fdb4d255b6a3b51925f8a226bfebf2eccabd2786" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="odoo-base-addons.git" path="addons/Numigi_odoo-base-addons" remote="Numigi" revision="60bc1e5414ff3bf81a6d72831da2eaad94ccbcb2" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="odoo-business-spending-management-quebec-canada.git" path="addons/MathBenTech_odoo-business-spending-management-quebec-canada" remote="MathBenTech" revision="745cb2ec3df909e6f3622b4ef19971e6e83b46b5" upstream="stable_prod_12.0" dest-branch="stable_prod_12.0" groups="addons"/>
<project name="odoo-entertainment-addons.git" path="addons/Numigi_odoo-entertainment-addons" remote="Numigi" revision="82c33255261eff361a91da13b28e4e68a95b25dd" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="odoo-git-addons.git" path="addons/Numigi_odoo-git-addons" remote="Numigi" revision="96db417669a631877c1439f617ac8c0cc6edfff9" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="odoo-hr-addons.git" path="addons/Numigi_odoo-hr-addons" remote="Numigi" revision="0034395bcdb38c02749644607f43ccac760dfb49" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="odoo-partner-addons.git" path="addons/Numigi_odoo-partner-addons" remote="Numigi" revision="f0c54ffb3409cd8e748ae5db19077c7c966cd57f" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="odoo-product-addons.git" path="addons/Numigi_odoo-product-addons" remote="Numigi" revision="36751bd3c6baced6a0b3f5ddb675d87cb04a745c" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="odoo-project-addons.git" path="addons/Numigi_odoo-project-addons" remote="Numigi" revision="4388a4ca61b87032e2c3783dc2740b299cd31b6f" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="odoo-purchase-addons.git" path="addons/Numigi_odoo-purchase-addons" remote="Numigi" revision="5d226ca3887c77e31467a192a0fbe4066bf7842c" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="odoo-stock-addons.git" path="addons/Numigi_odoo-stock-addons" remote="Numigi" revision="3fe57c3cad122d5a448239b46fda8bf76ea32493" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="odoo-survey-addons.git" path="addons/Numigi_odoo-survey-addons" remote="Numigi" revision="9e897bae38ff0d6d3180296a552d994bb10c0eff" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="odoo-timesheet-addons.git" path="addons/Numigi_odoo-timesheet-addons" remote="Numigi" revision="d2bbb19dc8f917272694ff0a6231275083fb7e74" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="odoo-web-addons.git" path="addons/Numigi_odoo-web-addons" remote="Numigi" revision="3a4aa46439a794429d5939cff561f42c4f312a99" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="odoo.git" path="odoo" remote="odoo" revision="94bcbc92e5e5a6fd3de7267e3c01f8c11fb045f4" upstream="12.0_feature_5_star_CRM" dest-branch="12.0_feature_5_star_CRM" groups="odoo" clone-depth="1"/>
<project name="odoo_addons.git" path="addons/Smile-SA_odoo_addons" remote="Smile-SA" revision="2be318c18ac5b0fe2129cc61d86419033ff07d5f" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="openeducat_erp.git" path="addons/openeducat_openeducat_erp" remote="openeducat" revision="4a2a1d930d88a127959fd39af22f7d818e08663d" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="partner-contact.git" path="addons/OCA_partner-contact" remote="OCA" revision="a79e57685caad7d0dec9318378fdd46862e31be4" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="pos.git" path="addons/OCA_pos" remote="OCA" revision="6a922b3d87491d59128a097f286be1e3f3fc11df" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="product-attribute.git" path="addons/OCA_product-attribute" remote="OCA" revision="ea48097094462e67d7e1558b333da78c6038b89c" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="product-pack.git" path="addons/OCA_product-pack" remote="OCA" revision="b9eccbdb9ae0fdd3ed1138270c3eff3142a015c3" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="product-variant.git" path="addons/OCA_product-variant" remote="OCA" revision="fb4f4042b3ca0ee6cde6ab0625e2c914b96b174f" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="project-reporting.git" path="addons/OCA_project-reporting" remote="OCA" revision="7f71f086dd732170e7605dfdf80e6cc4969a711e" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="project.git" path="addons/OCA_project" remote="OCA" revision="4390f1ffa9f00058b0d1aa7fae27fb74bbefb83b" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="purchase-workflow.git" path="addons/OCA_purchase-workflow" remote="OCA" revision="d17436791bcfbe0985af137163564af3fe90bbe1" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="queue.git" path="addons/OCA_queue" remote="OCA" revision="0b71a3951b583f154f170adacf4920e6d7138329" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="reporting-engine.git" path="addons/OCA_reporting-engine" remote="OCA" revision="14fba657a0dbda1258edcf3c92886866e7cecf67" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="sale-workflow.git" path="addons/OCA_sale-workflow" remote="OCA" revision="4b200358312689d944aaaf012c5723bb2bc9cb77" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="santelibre_addons.git" path="addons/SanteLibre_santelibre_addons" remote="SanteLibre" revision="ee94058aecee418b3652864f23b54a86ba0f92f4" upstream="master" dest-branch="master" groups="addons"/>
<project name="scrummer.git" path="addons/MathBenTech_scrummer" remote="MathBenTech" revision="38c04c8f7b7fe897d166ded74dda9d8d76f7f4c4" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="server-auth.git" path="addons/OCA_server-auth" remote="OCA" revision="f911c9f31a064cca3012431b70e60a7b89448138" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="server-brand.git" path="addons/OCA_server-brand" remote="OCA" revision="d8f27b04475d3cc74a7bebb1e086f647f5e01569" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="server-env.git" path="addons/OCA_server-env" remote="OCA" revision="19af535b3aedd5c1fdfbe911dacfc43ae31edb71" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="server-tools.git" path="addons/OCA_server-tools" remote="OCA" revision="d97aaa9fa2f01f64ebf7100668e0901fde35d42f" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="server-ux.git" path="addons/OCA_server-ux" remote="OCA" revision="655b3cc291a7e3718371a45ebe6f2e0952896adf" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="social.git" path="addons/OCA_social" remote="OCA" revision="7b0836bf7a5c40db332dd90d5ebef619234060ac" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="stock-logistics-warehouse.git" path="addons/OCA_stock-logistics-warehouse" remote="OCA" revision="a591de15150f7b16c1ef23d2fc30c814874dea27" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="timesheet.git" path="addons/OCA_timesheet" remote="OCA" revision="8625e65414801780c91e91bf93b2ed32567f8117" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="web.git" path="addons/OCA_web" remote="OCA" revision="b65c492f4011fe4e9dac8c0a26eeef8c43cb1c39" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="website.git" path="addons/OCA_website" remote="OCA" revision="603a44d53a2e7a457560a0f99bdcc95780399ee5" upstream="12.0" dest-branch="12.0" groups="addons"/>
<project name="wms.git" path="addons/OCA_wms" remote="OCA" revision="e7a1541f8c513cf755bd82780c6c035d2fafc2ce" upstream="12.0" dest-branch="12.0" groups="addons"/>
</manifest>

View file

@ -2,4 +2,5 @@ giturlparse
agithub
gitpython
PyYAML
retrying
retrying
xmltodict

2
run.sh
View file

@ -1,2 +1,2 @@
#!/usr/bin/env bash
./venv/bin/python ./odoo/odoo-bin -c ./config.conf
./venv/bin/python ./odoo/odoo-bin -c ./config.conf $@

View file

@ -1,113 +0,0 @@
#!/usr/bin/env python
# dict config contains information about repository of original source
# level 1: website of git
# level 2: entity, organization, user
# level 3: project name
config = {
"github.com": {
"odoo": [
"odoo",
],
}
}
config_addons = {
"github.com": {
"MathBenTech": [
"development",
"odoo-business-spending-management-quebec-canada",
"scrummer",
],
"muk-it": [
"muk_base",
"muk_dms",
"muk_docs",
"muk_misc",
"muk_quality",
"muk_web",
"muk_website",
],
"Numigi": [
"odoo-base-addons",
"odoo-entertainment-addons",
"odoo-git-addons",
"odoo-hr-addons",
"odoo-partner-addons",
"odoo-product-addons",
"odoo-project-addons",
"odoo-purchase-addons",
"odoo-stock-addons",
"odoo-survey-addons",
"odoo-timesheet-addons",
"odoo-web-addons",
],
"OCA": [
"account-analytic",
"account-budgeting",
"account-closing",
"account-consolidation",
"account-financial-reporting",
"account-fiscal-rule",
"account-invoicing",
"account-invoice-reporting",
"account-payment",
"account-reconcile",
"apps-store",
"bank-payment",
"bank-statement-import",
"brand",
"business-requirement",
"commission",
"community-data-files",
"connector-telephony",
"contract",
"credit-control",
"currency",
"data-protection",
"donation",
"e-commerce",
"edi",
"event",
"helpdesk",
"hr",
"knowledge",
"l10n-canada",
"maintenance",
"management-system",
"manufacture",
"margin-analysis",
"mis-builder",
"multi-company",
"partner-contact",
"pos",
"product-attribute",
"product-pack",
"product-variant",
"project",
"project-reporting",
"purchase-workflow",
"queue",
"reporting-engine",
"sale-workflow",
"server-auth",
"server-brand",
"server-env",
"server-tools",
"server-ux",
"social",
"stock-logistics-warehouse",
"timesheet",
"web",
"website",
"wms",
],
"odooaktiv": [
"QuotationRevision",
],
"openeducat": [
"openeducat_erp",
],
"Smile-SA": [
"odoo_addons",
],
}
}

View file

@ -147,7 +147,7 @@ def fork_and_clone_repo(
print("Error when forking repo %s" % forked_repo)
exit(1)
else:
print("Forked %s to %s" % (upstream_url, forked_repo['ssh_url']))
print("Forked %s to %s" % (upstream_url, forked_repo['html_url']))
elif status == 202:
print("Forked repo %s already exists" % forked_repo['full_name'])
elif status != 200:

View file

@ -13,7 +13,7 @@ from script import fork_github_repo
from script.git_tool import GitTool
_logger = logging.getLogger(__name__)
CST_GITHUB_TOKEN = "GITHUB_TOKEN"
CST_EL_GITHUB_TOKEN = "EL_GITHUB_TOKEN"
def get_config():
@ -37,7 +37,7 @@ def get_config():
parser.add_argument('--organization', dest="organization", default="ERPLibre",
help="Choose organization to fork and change all repo.")
parser.add_argument('--github_token', dest="github_token",
default=config.get(CST_GITHUB_TOKEN),
default=config.get(CST_EL_GITHUB_TOKEN),
help="GitHub token generated by user")
args = parser.parse_args()
return args
@ -50,7 +50,6 @@ def main():
if not github_token:
raise ValueError("Missing github_token")
repo_root = Repo(config.dir)
lst_repo = GitTool().get_source_repo_addons(repo_path=config.dir)
i = 0
total = len(lst_repo)
@ -115,7 +114,7 @@ def main():
# Update origin to new repo
GitTool().generate_odoo_install_locally()
GitTool().generate_install_locally()
if __name__ == '__main__':

View file

@ -12,7 +12,7 @@ sys.path.append(new_path)
from script.git_tool import GitTool
_logger = logging.getLogger(__name__)
CST_GITHUB_TOKEN = "GITHUB_TOKEN"
CST_EL_GITHUB_TOKEN = "EL_GITHUB_TOKEN"
def get_config():
@ -36,12 +36,11 @@ def get_config():
parser.add_argument('--organization', dest="organization", default="ERPLibre",
help="Choose organization to fork and change all repo.")
parser.add_argument("--skip_fork", action="store_true",
help="Ignore fork to generate only dependancies like "
".gitmodules and odoo_install_locally.sh")
help="Ignore fork to generate only manifest.")
parser.add_argument('-f', "--force", action="store_true",
help="Force rewrite remote.")
parser.add_argument('--github_token', dest="github_token",
default=config.get(CST_GITHUB_TOKEN),
default=config.get(CST_EL_GITHUB_TOKEN),
help="GitHub token generated by user")
args = parser.parse_args()
return args
@ -53,79 +52,83 @@ def main():
git_tool = GitTool()
root_repo = Repo(config.dir)
if not github_token:
if not github_token and not config.skip_fork:
raise ValueError("Missing github_token")
organization_name = config.organization
lst_repo = git_tool.get_source_repo_addons(repo_path=config.dir, add_repo_root=True)
lst_repo_organization = [git_tool.get_transformed_repo_info_from_url(
a.get("url"), repo_path=config.dir, organization_force=organization_name,
is_submodule=a.get("is_submodule"), sub_path=a.get("sub_path"))
is_submodule=a.get("is_submodule"), sub_path=a.get("sub_path"),
revision=a.get("revision"), clone_depth=a.get("clone_depth"))
for a in lst_repo]
i = 0
total = len(lst_repo)
for repo in lst_repo:
i += 1
print(f"Nb element {i}/{total}")
url = repo.get("url")
try:
working_repo = Repo(repo.get("relative_path"))
except git.exc.NoSuchPathError:
# Check to fork
# repo_info = git_tool.get_transformed_repo_info_from_url(
# url, organization_force="ERPLibre",
# is_submodule=repo.get("is_submodule"),
# sub_path=repo.get("sub_path"))
git_tool.fork_repo(upstream_url=url,
github_token=github_token,
organization_name="ERPLibre")
repo_info = git_tool.get_transformed_repo_info_from_url(
url, organization_force=organization_name,
is_submodule=repo.get("is_submodule"), sub_path=repo.get("sub_path"))
git_tool.fork_repo(upstream_url=url,
github_token=github_token,
organization_name=organization_name)
if not config.skip_fork:
i = 0
total = len(lst_repo)
for repo in lst_repo:
i += 1
print(f"Nb element {i}/{total} - {repo.get('project_name')}")
url = repo.get("url")
git_tool.add_and_fetch_remote(repo_info, root_repo=root_repo)
continue
try:
working_repo = Repo(repo.get("relative_path"))
except git.exc.NoSuchPathError:
# Check to fork
# repo_info = git_tool.get_transformed_repo_info_from_url(
# url, organization_force="ERPLibre",
# is_submodule=repo.get("is_submodule"),
# sub_path=repo.get("sub_path"))
git_tool.fork_repo(upstream_url=url,
github_token=github_token,
organization_name="ERPLibre")
repo_info = git_tool.get_transformed_repo_info_from_url(
url, organization_force=organization_name,
is_submodule=repo.get("is_submodule"),
sub_path=repo.get("sub_path"))
git_tool.fork_repo(upstream_url=url,
github_token=github_token,
organization_name=organization_name)
dct_remote_name = {a.name: a for a in working_repo.remotes}
remote_origin = dct_remote_name.get("origin")
remote_erplibre = dct_remote_name.get("ERPLibre")
remote_organization = dct_remote_name.get(organization_name)
# git_tool.add_and_fetch_remote(repo_info, root_repo=root_repo)
continue
dct_remote_name = {a.name: a for a in working_repo.remotes}
remote_origin = dct_remote_name.get("origin")
remote_erplibre = dct_remote_name.get("ERPLibre")
remote_organization = dct_remote_name.get(organization_name)
if not config.skip_fork:
if not remote_erplibre:
repo_info = git_tool.get_transformed_repo_info_from_url(
url, organization_force="ERPLibre",
is_submodule=repo.get("is_submodule"),
sub_path=repo.get("sub_path"))
git_tool.add_and_fetch_remote(repo_info)
# git_tool.add_and_fetch_remote(repo_info)
git_tool.fork_repo(url, github_token,
organization_name=organization_name,
)
repo_info = git_tool.get_transformed_repo_info_from_url(
url, organization_force=organization_name,
is_submodule=repo.get("is_submodule"), sub_path=repo.get("sub_path"))
if remote_origin:
working_repo.git.remote("remove", "origin")
repo_info.organization = "origin"
try:
git_tool.add_and_fetch_remote(repo_info, root_repo=root_repo)
except Exception as e:
print(e)
if config.force and remote_organization:
working_repo.git.remote("remove", organization_name)
repo_info = git_tool.get_transformed_repo_info_from_url(
url, organization_force=organization_name,
is_submodule=repo.get("is_submodule"), sub_path=repo.get("sub_path"))
if remote_origin:
working_repo.git.remote("remove", "origin")
repo_info.organization = "origin"
# try:
# git_tool.add_and_fetch_remote(repo_info, root_repo=root_repo)
# except Exception as e:
# print(e)
if config.force and remote_organization:
working_repo.git.remote("remove", organization_name)
repo_info.organization = organization_name
git_tool.add_and_fetch_remote(repo_info)
repo_info.organization = organization_name
# git_tool.add_and_fetch_remote(repo_info)
# Update origin to new repo
git_tool.generate_git_modules(lst_repo_organization, repo_path=config.dir)
git_tool.generate_odoo_install_locally()
# git_tool.generate_git_modules(lst_repo_organization, repo_path=config.dir)
git_tool.generate_repo_manifest(lst_repo_organization, repo_path=config.dir)
git_tool.generate_install_locally()
if __name__ == '__main__':

View file

@ -10,11 +10,10 @@ from retrying import retry # pip install retrying
new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), '..'))
sys.path.append(new_path)
from script import fork_github_repo
from script import git_tool
_logger = logging.getLogger(__name__)
CST_GITHUB_TOKEN = "GITHUB_TOKEN"
CST_EL_GITHUB_TOKEN = "EL_GITHUB_TOKEN"
def get_config():
@ -36,18 +35,20 @@ def get_config():
parser.add_argument('-d', '--dir', dest="dir", default="./",
help="Path of repo to change remote, including submodule.")
parser.add_argument('--github_token', dest="github_token",
default=config.get(CST_GITHUB_TOKEN),
default=config.get(CST_EL_GITHUB_TOKEN),
help="GitHub token generated by user")
parser.add_argument("--open_web_browser", action="store_true",
help="Open web browser for each repo.")
parser.add_argument("--generate_only_install_locally", action="store_true",
help="Only generate script odoo_install_locally.sh.")
parser.add_argument("--generate_repo_source_from_building", action="store_true",
help=f"Only generate "
f"{git_tool.CST_FILE_SOURCE_REPO_ADDONS_ODOO}")
help="Only generate script install_locally.sh.")
parser.add_argument("--sync_to", dest="sync_to",
help=f"Only synchronize matching repo, use path compare to "
f"repo.")
help="Only synchronize matching repo, use path compare to "
"repo.")
parser.add_argument("--dry_sync", dest="dry_sync", action="store_true",
help="Don't apply modification when sync_to.")
parser.add_argument("--sync_with_submodule", dest="sync_with_submodule",
action="store_true",
help="Remote directory use submodule to sync.")
args = parser.parse_args()
return args
@ -58,24 +59,23 @@ def main():
config = get_config()
if config.generate_only_install_locally:
print("Generate config file locally.")
gt = git_tool.GitTool()
gt.generate_odoo_install_locally()
return
if config.generate_repo_source_from_building:
gt = git_tool.GitTool()
gt.generate_repo_source_from_building()
gt.generate_install_locally()
return
if config.sync_to:
if config.sync_to[-1] != "/":
config.sync_to += "/"
gt = git_tool.GitTool()
result = gt.get_matching_repo(repo_compare_to=config.sync_to,
force_normalize_compare=True)
gt.sync_to(result)
force_normalize_compare=True,
sync_with_submodule=config.sync_with_submodule)
gt.sync_to(result, checkout_when_diff=not config.dry_sync)
return
# repo_root = Repo(".")
lst_repo = git_tool.GitTool.get_repo_info_submodule(repo_path=config.dir)
lst_repo = git_tool.GitTool.get_repo_info(repo_path=config.dir)
i = 0
total = len(lst_repo)
for repo in lst_repo:

View file

@ -34,11 +34,9 @@ def get_config():
)
parser.add_argument('-d', '--dir', dest="dir", default="./",
help="Path of repo to change remote, including submodule.")
parser.add_argument('-f', '--upstream', dest="upstream", default="origin",
help="Upstream name to change address https to git.")
# TODO support all_upstream
# parser.add_argument("--all_upstream", action="store_true",
# help="Replace for all existing upstream for each repo.")
parser.add_argument('-f', '--upstream', dest="upstream",
help="Upstream name to change address https to git. "
"When empty, all upstream is updated.")
parser.add_argument("--git_to_https", action="store_true",
help="Replace all repo git to https.")
args = parser.parse_args()
@ -50,20 +48,24 @@ def main():
config = get_config()
upstream_name = config.upstream
lst_repo = git_tool.get_repo_info_submodule(config.dir, add_root=True,
upstream=upstream_name)
lst_repo = git_tool.get_repo_info(config.dir, add_root=True)
i = 0
total = len(lst_repo)
for repo in lst_repo:
i += 1
print(f"Nb element {i}/{total}")
repo_sm = Repo(repo.get("name"))
remote_upstream_name = [a for a in repo_sm.remotes if upstream_name == a.name]
new_url = repo.get("url_https") if config.git_to_https else repo.get("url_git")
if upstream_name:
remote_upstream_name = [a for a in repo_sm.remotes
if upstream_name == a.name]
else:
remote_upstream_name = [a for a in repo_sm.remotes]
for remote in remote_upstream_name:
url, url_https, url_git = git_tool.get_url(remote.url)
new_url = url_https if config.git_to_https else url_git
remote.set_url(new_url)
print('Remote "%s" created for %s' % (upstream_name, new_url))
print(f'Remote "{remote.name}" update for {new_url}')
if __name__ == '__main__':

View file

@ -0,0 +1,61 @@
#!/usr/bin/env python
import os
import sys
import argparse
import logging
new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), '..'))
sys.path.append(new_path)
from script.git_tool import GitTool
_logger = logging.getLogger(__name__)
def get_config():
"""Parse command line arguments, extracting the config file name,
returning the union of config file and command line arguments
:return: dict of config file settings and command line arguments
"""
# TODO update description
parser = argparse.ArgumentParser(
formatter_class=argparse.RawDescriptionHelpFormatter,
description='''\
''',
epilog='''\
'''
)
parser.add_argument('-d', '--dir', dest="dir", default="./",
help="Path of repo to change remote, including submodule.")
parser.add_argument('--clear', action="store_true",
help="Create a new manifest and clear old configuration.")
args = parser.parse_args()
return args
def main():
config = get_config()
git_tool = GitTool()
lst_repo = git_tool.get_source_repo_addons(repo_path=config.dir, add_repo_root=True)
lst_repo_organization = [git_tool.get_transformed_repo_info_from_url(
a.get("url"), repo_path=config.dir, get_obj=True,
is_submodule=a.get("is_submodule"), sub_path=a.get("sub_path"),
revision=a.get("revision"), clone_depth=a.get("clone_depth"))
for a in lst_repo]
# Update origin to new repo
if not config.clear:
dct_remote, dct_project = git_tool.get_manifest_xml_info(repo_path=config.dir,
add_root=True)
else:
dct_remote = {}
dct_project = {}
git_tool.generate_repo_manifest(lst_repo_organization, repo_path=config.dir,
dct_remote=dct_remote, dct_project=dct_project)
git_tool.generate_install_locally()
if __name__ == '__main__':
main()

View file

@ -2,18 +2,19 @@
# © 2020 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import os
from . import addons_repo_origin
import webbrowser
from retrying import retry # pip install retrying
from agithub.GitHub import GitHub # pip install agithub
from giturlparse import parse # pip install giturlparse
import xmltodict
from collections import OrderedDict
from git import Repo
import git
from typing import List
CST_FILE_SOURCE_REPO_ADDONS_ODOO = "source_repo_addons_odoo.csv"
CST_GITHUB_TOKEN = "GITHUB_TOKEN"
CST_FILE_SOURCE_REPO_ADDONS = "source_repo_addons.csv"
CST_EL_GITHUB_TOKEN = "EL_GITHUB_TOKEN"
class Struct(object):
@ -42,15 +43,20 @@ class GitTool:
get_obj: bool = True,
is_submodule: bool = True,
organization_force: str = None,
sub_path: str = "addons") -> object:
sub_path: str = "addons",
revision: str = "",
clone_depth: str = "") -> object:
"""
:param url:
:param repo_path:
:param get_obj:
:param is_submodule:
:param path:
:param organization_force: Keep repo_path and change organization
:param sub_path:
:param revision: Tag or branch name. When empty, use default branch.
:param clone_depth: length of git history to clone. Clone all git when empty.
Set to 0 to increase speed to clone, set to empty for development.
:return:
"""
_, url_https, url_git = self.get_url(url)
@ -72,18 +78,30 @@ class GitTool:
relative_path = f"{repo_path}/{path}"
relative_path = os.path.normpath(relative_path)
original_organization = organization
url_https_original_organization = url_https[:url_https.rfind("/")]
project_name = url_https[url_https.rfind("/") + 1:]
# begin_original = url_git[url_git.find(":") + 1:]
# original_organization = begin_original[:begin_original.find("/")]
if organization_force:
organization = organization_force
url_split = url_https.split("/")
url_split[3] = organization
url_https = "/".join(url_split)
url, _, url_git = self.get_url(url_https)
url_https_organization = url_https[:url_https.rfind("/")]
d = {
"url": url,
"url_git": url_git,
"url_https": url_https,
"organization": organization,
"original_organization": original_organization,
"url_https_organization": url_https_organization,
"url_https_original_organization": url_https_original_organization,
"project_name": project_name,
"revision": revision,
"clone_depth": clone_depth,
"repo_name": repo_name,
"path": path,
"relative_path": relative_path,
@ -94,9 +112,15 @@ class GitTool:
return Struct(**d)
return d
@staticmethod
def get_repo_info_submodule(repo_path: str = "./", add_root: bool = False,
upstream: str = "origin") -> list:
def get_repo_info(self, repo_path: str = "./",
add_root: bool = False, is_manifest: bool = True):
if is_manifest:
return self.get_repo_info_manifest_xml(repo_path=repo_path,
add_root=add_root)
return self.get_repo_info_submodule(repo_path=repo_path, add_root=add_root)
def get_repo_info_submodule(self, repo_path: str = "./",
add_root: bool = False) -> list:
"""
Get information about submodule from repo_path
:param repo_path: path of repo to get information about submodule
@ -139,12 +163,7 @@ class GitTool:
continue
elif line[:7] == "\turl = ":
url = line[7:-1]
if "https" in url:
url_git = f"git@{url[8:].replace('/', ':', 1)}"
url_https = url
else:
url_https = f"https://{(url[4:]).replace(':', '/')}"
url_git = url
url, url_https, url_git = self.get_url(url)
continue
elif line[:8] == "\tpath = ":
path = line[8:-1]
@ -168,12 +187,7 @@ class GitTool:
if add_root:
repo_root = Repo(repo_path)
url = repo_root.git.remote("get-url", "origin")
if "https" in url:
url_git = f"git@{url[8:].replace('/', ':', 1)}"
url_https = url
else:
url_https = f"https://{(url[4:]).replace(':', '/')}"
url_git = url
url, url_https, url_git = self.get_url(url)
data = {
"url": url,
@ -187,10 +201,12 @@ class GitTool:
lst_repo = sorted(lst_repo, key=lambda k: k.get("name"))
return lst_repo
@staticmethod
def get_repo_info_from_data_structure(repo_path="./", ignore_odoo=False):
def get_repo_info_manifest_xml(self, repo_path: str = "./",
add_root: bool = False) -> list:
"""
Deprecated, read file addons_repo_origin to obtains repo list.
Get information about manifest of Repo from repo_path
:param repo_path: path of repo to get information about submodule
:param add_root: add information about root repository
:return:
[{
"url": original_url,
@ -201,36 +217,79 @@ class GitTool:
"name": name of the submodule
}]
"""
dct_config = {
"addons": addons_repo_origin.config_addons
}
if not ignore_odoo:
dct_config[""] = addons_repo_origin.config
result = []
for c_path, dct_config in dct_config.items():
for server, dct_organization in dct_config.items():
for organization, lst_repo in dct_organization.items():
for repo in lst_repo:
url = f"https://{server}/{organization}/{repo}.git"
url_https = f"https://{server}/{organization}/{repo}.git"
url_git = f"git@{server}:{organization}/{repo}.git"
if not c_path:
path = f"{repo}"
else:
path = f"{c_path}/{organization}_{repo}"
manifest_file = self.get_manifest_file(repo_path=repo_path)
filename = f"{repo_path}{manifest_file}"
lst_repo = []
with open(filename) as xml:
xml_as_string = xml.read()
xml_dict = xmltodict.parse(xml_as_string, dict_constructor=dict)
dct_manifest = xml_dict.get("manifest")
default_remote = dct_manifest.get("default").get("@remote")
lst_remote = dct_manifest.get("remote")
if type(lst_remote) is dict:
lst_remote = [lst_remote]
lst_project = dct_manifest.get("project")
if type(lst_project) is dict:
lst_project = [lst_project]
dct_remote = {a.get("@name"): a.get("@fetch") for a in lst_remote}
for project in lst_project:
# get name and remote .git
path = project.get("@path")
name = path
url_prefix = dct_remote.get(project.get("@remote"))
if not url_prefix:
# get default remote
url_prefix = dct_remote.get(default_remote)
url = f"{url_prefix}{project.get('@name')}"
url, url_https, url_git = self.get_url(url)
data = {
"url": url,
"url_https": url_https,
"url_git": url_git,
"path": path,
"relative_path": f"{repo_path}/{path}",
"name": name,
}
lst_repo.append(data)
name = path
result.append(
{
"url": url,
"url_https": url_https,
"url_git": url_git,
"relative_path": f"{repo_path}/{path}",
"path": path,
"name": name,
}
)
return result
if add_root:
repo_root = Repo(repo_path)
url = repo_root.git.remote("get-url", "origin")
url, url_https, url_git = self.get_url(url)
data = {
"url": url,
"url_https": url_https,
"url_git": url_git,
"path": repo_path,
"name": "",
}
lst_repo.insert(0, data)
# Sort
lst_repo = sorted(lst_repo, key=lambda k: k.get("name"))
return lst_repo
def get_manifest_xml_info(self, repo_path: str = "./",
add_root: bool = False) -> list:
"""
Get contain of manifest
:param repo_path: path of repo to get information about submodule
:param add_root: add information about root repository
:return: dct_remote, dct_project
"""
manifest_file = self.get_manifest_file(repo_path=repo_path)
filename = f"{repo_path}/manifest/{manifest_file}"
with open(filename) as xml:
xml_as_string = xml.read()
xml_dict = xmltodict.parse(xml_as_string, dict_constructor=dict)
dct_manifest = xml_dict.get("manifest")
default_remote = dct_manifest.get("default").get("@remote")
lst_remote = dct_manifest.get("remote")
lst_project = dct_manifest.get("project")
dct_remote = {a.get("@name"): a for a in lst_remote}
dct_project = {a.get("@name"): a for a in lst_project}
return dct_remote, dct_project
@staticmethod
def get_project_config(repo_path="./"):
@ -239,7 +298,7 @@ class GitTool:
:param repo_path: path of repo to get information env_var.sh
:return:
{
CST_GITHUB_TOKEN: TOKEN,
CST_EL_GITHUB_TOKEN: TOKEN,
}
"""
filename = f"{repo_path}env_var.sh"
@ -247,7 +306,7 @@ class GitTool:
txt = file.readlines()
txt = [a[:-1] for a in txt if "=" in a]
lst_filter = [CST_GITHUB_TOKEN]
lst_filter = [CST_EL_GITHUB_TOKEN]
dct_config = {}
# Take filtered value and get bash string values
for f in lst_filter:
@ -255,7 +314,7 @@ class GitTool:
if f in v:
lst_v = v.split("=")
if len(lst_v) > 1:
dct_config[CST_GITHUB_TOKEN] = v.split("=")[1][1:-1]
dct_config[CST_EL_GITHUB_TOKEN] = v.split("=")[1][1:-1]
return dct_config
@staticmethod
@ -264,39 +323,25 @@ class GitTool:
if url:
webbrowser.open_new_tab(url)
def generate_repo_source_from_building(self, repo_path="./"):
"""
DEPRECATED
Generate csv file with information about all source addons repo of Odoo
:param repo_path: Path to build repo source
:return:
"""
file_name = f"{repo_path}{CST_FILE_SOURCE_REPO_ADDONS_ODOO}"
lst_repo_info = self.get_repo_info_from_data_structure(ignore_odoo=True)
lst_result = [f"{a.get('url_https')}\n" for a in lst_repo_info]
with open(file_name, "w") as file:
file.writelines(lst_result)
def generate_odoo_install_locally(self, repo_path="./"):
# lst_repo = self.get_repo_info_from_data_structure(ignore_odoo=True)
lst_repo = self.get_repo_info_submodule(repo_path=repo_path)
def generate_install_locally(self, repo_path="./"):
lst_repo = self.get_repo_info(repo_path=repo_path)
lst_result = []
for repo in lst_repo:
# Exception, ignore addons/OCA_web and root
if "addons/OCA_web" == repo.get("path") or \
"odoo" == repo.get("path"):
continue
str_repo = f' printf "${{OE_HOME}}/{repo.get("path")}," >> ' \
f'${{OE_CONFIG_FILE}}\n'
str_repo = f' printf "${{EL_HOME}}/{repo.get("path")}," >> ' \
f'${{EL_CONFIG_FILE}}\n'
lst_result.append(str_repo)
with open(f"{repo_path}script/odoo_install_locally.sh") as file:
with open(f"{repo_path}script/install_locally.sh") as file:
all_lines = file.readlines()
# search place to add/replace lines
index = 0
find_index = False
index_find = 0
for line in all_lines:
if not find_index and "if [[ $MINIMAL_ADDONS = \"False\" ]]; then\n" == line:
if not find_index and "if [[ $EL_MINIMAL_ADDONS = \"False\" ]]; then\n" == line:
index_find = index + 1
for insert_line in lst_result:
all_lines.insert(index_find, insert_line)
@ -310,9 +355,119 @@ class GitTool:
index += 1
# create file
with open(f"{repo_path}script/odoo_install_locally.sh", mode="w") as file:
with open(f"{repo_path}script/install_locally.sh", mode="w") as file:
file.writelines(all_lines)
@staticmethod
def str_insert(source_str, insert_str, pos):
return source_str[:pos] + insert_str + source_str[pos:]
def generate_repo_manifest(self, lst_repo: List[Struct], repo_path: str = "./",
dct_remote={}, dct_project={}):
lst_remote = []
lst_remote_name = []
lst_project = []
lst_project_name = []
lst_default = []
# Fill with configuration
for dct_value in dct_remote.values():
lst_remote.append(OrderedDict(
[('@name', dct_value.get("@name")),
('@fetch', dct_value.get("@fetch"))]
))
lst_remote_name.append(dct_value.get("@name"))
for dct_value in dct_project.values():
lst_project_info = [
('@name', dct_value.get("@name")),
('@path', dct_value.get("@path")),
('@remote', dct_value.get("@remote"))
]
if "@revision" in dct_value.keys():
lst_project_info.append(('@revision', dct_value.get("@revision")))
if "@clone-depth" in dct_value.keys():
lst_project_info.append(('@clone-depth', dct_value.get("@clone-depth")))
if "@groups" in dct_value.keys():
lst_project_info.append(('@groups', dct_value.get("@groups")))
lst_project.append(OrderedDict(lst_project_info))
lst_project_name.append(dct_value.get("@name"))
for repo in lst_repo:
if not repo.is_submodule:
# Default
if lst_default:
raise Exception("Cannot have many root repo. "
"Validate why 2 or more is not submodule.")
lst_default.append(OrderedDict([
('@remote', repo.original_organization),
('@revision', "12.0"),
('@sync-j', "4"),
('@sync-c', "true"),
]))
else:
# Add remote, only unique remote
if repo.original_organization not in lst_remote_name:
lst_remote.append(OrderedDict(
[('@name', repo.original_organization),
('@fetch', repo.url_https_organization + "/")]
))
lst_remote_name.append(repo.original_organization)
# Add project, only unique project
if repo.project_name not in lst_project_name:
lst_project_name.append(repo.project_name)
lst_project_info = [
('@name', repo.project_name),
('@path', repo.path),
('@remote', repo.original_organization),
]
if repo.revision:
lst_project_info.append(('@revision', repo.revision))
if repo.clone_depth:
lst_project_info.append(('@clone-depth', repo.clone_depth))
if repo.sub_path == "addons":
lst_project_info.append(('@groups', "addons"))
else:
lst_project_info.append(('@groups', "odoo"))
lst_project.append(OrderedDict(lst_project_info))
# Order in alphabetic
lst_order_remote = sorted(lst_remote, key=lambda key: key.get("@name"))
lst_order_default = sorted(lst_default, key=lambda key: key.get("@remote"))
lst_order_project = sorted(lst_project, key=lambda key: key.get("@name"))
dct_repo = OrderedDict(
[('manifest', OrderedDict([
('remote', lst_order_remote),
('default', lst_order_default),
('project', lst_order_project),
]))])
str_xml_text = xmltodict.unparse(dct_repo, pretty=True)
pos_insert = str_xml_text.rfind("</remote>")
if pos_insert:
pos_insert += len("</remote>")
str_xml_text = self.str_insert(str_xml_text, "\n ", pos_insert)
pos_insert = str_xml_text.rfind("</default>")
if pos_insert:
pos_insert += len("</default>")
str_xml_text = self.str_insert(str_xml_text, "\n ", pos_insert)
# pos_insert = str_xml_text.rfind("</project>")
# if pos_insert:
# pos_insert += len("</project>")
# str_xml_text = self.str_insert(str_xml_text, "\n ", pos_insert)
str_xml_text = str_xml_text.replace("></remote", "/")
str_xml_text = str_xml_text.replace("></default", "/")
str_xml_text = str_xml_text.replace("></project", "/")
str_xml_text = str_xml_text.replace("encoding=\"utf-8\"", "encoding=\"UTF-8\"")
str_xml_text = str_xml_text.replace("\t", " ")
# create file
with open(f"{repo_path}manifest/default.dev.xml", mode="w") as file:
file.writelines(str_xml_text + "\n")
def generate_git_modules(self, lst_repo: List[Struct], repo_path: str = "./"):
lst_modules = []
for repo in lst_repo:
@ -327,8 +482,8 @@ class GitTool:
def get_source_repo_addons(self, repo_path="./", add_repo_root=False):
"""
Read file CST_FILE_SOURCE_REPO_ADDONS_ODOO and return structure of data
:param repo_path: path to find file CST_FILE_SOURCE_REPO_ADDONS_ODOO
Read file CST_FILE_SOURCE_REPO_ADDONS and return structure of data
:param repo_path: path to find file CST_FILE_SOURCE_REPO_ADDONS
:param add_repo_root: force adding repo root in the list
:return:
[{
@ -340,7 +495,7 @@ class GitTool:
"name": name of the submodule
}]
"""
file_name = f"{repo_path}{CST_FILE_SOURCE_REPO_ADDONS_ODOO}"
file_name = f"{repo_path}{CST_FILE_SOURCE_REPO_ADDONS}"
lst_result = []
if add_repo_root:
# TODO what to do if origin not exist?
@ -354,34 +509,64 @@ class GitTool:
with open(file_name) as file:
all_lines = file.readlines()
if all_lines:
# Validate first line is supported column
expected_header = "url,path,revision,clone-depth\n"
if all_lines[0] != expected_header:
raise Exception(f"Not supported csv, please validate {file_name} "
f"with first line {expected_header}")
# Ignore first line
all_lines = all_lines[1:]
# Be sure empty endline at the end of file
if all_lines[-1][-1] != "\n":
all_lines[-1] = all_lines[-1] + "\n"
for line in all_lines:
# Separate information with path in tuple
line_split = line[:-1].split(',')
if len(line_split) != 2:
print(f"Error with line {line}, suppose to have only 1 ','.")
if len(line_split) != 4:
print(f"Error with line {line}, suppose to have only 4 ','.")
exit(1)
url, path = line_split
url, path, revision, clone_depth = line_split
# Validate url
# If begin by http, need to finish by .git
if len(url) > 5 and url[0:4] == "http" and url[-4:] != ".git":
url = f"{url}.git"
repo_info = self.get_transformed_repo_info_from_url(url,
repo_path=repo_path,
get_obj=False,
sub_path=path)
sub_path=path,
revision=revision,
clone_depth=clone_depth)
lst_result.append(repo_info)
return lst_result
def get_manifest_file(self, repo_path: str = "./"):
"""
Find .repo and return default manifest file.
:param repo_path: path to search .repo
:return: manifest file used for Repo
"""
file = f"{repo_path}/.repo/manifest.xml"
with open(file) as xml:
xml_as_string = xml.read()
xml_dict = xmltodict.parse(xml_as_string, dict_constructor=dict)
manifest_filename = xml_dict.get("manifest").get("include").get("@name")
return manifest_filename
def get_matching_repo(self, actual_repo="./", repo_compare_to="./",
force_normalize_compare=False):
force_normalize_compare=False, sync_with_submodule=False):
"""
Compare repo with .gitmodules files
:param actual_repo:
:param repo_compare_to:
:param force_normalize_compare: update name of compare repo
:return:
:param sync_with_submodule: force use submodule with repo_compare_to
:return: (list of matches, list of missing, list of more)
"""
lst_repo_info_actual = self.get_repo_info_submodule(actual_repo)
lst_repo_info_actual = self.get_repo_info_manifest_xml(actual_repo)
dct_repo_info_actual = {a.get("name"): a for a in lst_repo_info_actual}
set_actual = set(dct_repo_info_actual.keys())
# set_actual = set(dct_repo_info_actual.keys())
# set_actual_repo = set(
# [a[a.find("_") + 1:] for a in dct_repo_info_actual.keys()])
@ -389,13 +574,16 @@ class GitTool:
dct_repo_info_actual.items()}
set_actual_repo = set(dct_repo_info_actual_adapted.keys())
lst_repo_info_compare = self.get_repo_info_submodule(repo_compare_to)
lst_repo_info_compare = self.get_repo_info(repo_compare_to,
is_manifest=not sync_with_submodule)
if force_normalize_compare:
for repo_info in lst_repo_info_compare:
url_https = repo_info.get("url_https")
url_split = url_https.split("/")
organization = url_split[3]
repo_name = url_split[4][:-4]
repo_name = url_split[4]
if repo_name[-4:] == ".git":
repo_name = repo_name[:-4]
# name = f"addons/{organization}_{repo_name}"
name = f"{repo_name}"
repo_info["name"] = name
@ -421,14 +609,34 @@ class GitTool:
dct_repo_info_compare[key]
))
return lst_match
return lst_match, lst_missing_name_normalize, lst_over_name_normalize
@staticmethod
def sync_to(lst_compare_repo_info):
i = 0
def sync_to(result, checkout_when_diff=False):
lst_compare_repo_info, lst_missing_info, lst_over_info = result
total = len(lst_missing_info)
if total:
print(f"\nList of missing : {total}")
i = 0
for info in lst_missing_info:
i += 1
print(f"Nb element {i}/{total}")
print(f"Missing '{info}'")
total = len(lst_over_info)
if total:
print(f"\nList of over : {total}")
i = 0
for info in lst_over_info:
i += 1
print(f"Nb element {i}/{total}")
print(f"Missing '{info}'")
total = len(lst_compare_repo_info)
print(f"\nList of normalize : {total}")
lst_same = []
lst_diff = []
i = 0
for original, compare_to in lst_compare_repo_info:
i += 1
print(f"Nb element {i}/{total}")
@ -437,9 +645,15 @@ class GitTool:
repo_compare = Repo(compare_to.get("relative_path"))
commit_compare = repo_compare.head.object.hexsha
if commit_original != commit_compare:
print(f"DIFF - {original.get('name')}")
print(f"DIFF - {original.get('name')} - O {commit_original} - "
f"R {commit_compare}")
lst_diff.append((original, compare_to))
repo_original.git.checkout(commit_compare)
if checkout_when_diff:
# Update all remote
for remote in repo_original.remotes:
retry(wait_exponential_multiplier=1000, stop_max_delay=15000)(
remote.fetch)()
repo_original.git.checkout(commit_compare)
else:
print(f"SAME - {original.get('name')}")
lst_same.append((original, compare_to))
@ -448,6 +662,13 @@ class GitTool:
@staticmethod
def add_and_fetch_remote(repo_info: Struct, root_repo: Repo = None,
branch_name: str = ""):
"""
Deprecated function, not use anymore git submodule
:param repo_info:
:param root_repo:
:param branch_name:
:return:
"""
try:
working_repo = Repo(repo_info.relative_path)
if repo_info.organization in [a.name for a in working_repo.remotes]:
@ -509,7 +730,7 @@ class GitTool:
print("Error when forking repo %s" % forked_repo)
exit(1)
else:
print("Forked %s to %s" % (upstream_url, forked_repo['ssh_url']))
print("Forked %s to %s" % (upstream_url, forked_repo['html_url']))
elif status == 202:
print("Forked repo %s already exists" % forked_repo['full_name'])
elif status != 200:

View file

@ -1,13 +1,13 @@
#!/bin/bash
#!/usr/bin/env bash
################################################################################
# Script for installing Odoo on OSX
# Script for installing ERPLibre on OSX
# Author: Alexandre Ferreira Benevides
#-------------------------------------------------------------------------------
# This script will install dependency for Odoo on your OSX server.
# This script will install dependency for ERPLibre on your OSX server.
#-------------------------------------------------------------------------------
################################################################################
OE_USER=$(whoami)
EL_USER=$(whoami)
#--------------------------------------------------
# Install PostgreSQL Server
@ -15,8 +15,8 @@ OE_USER=$(whoami)
echo "\n---- Install PostgreSQL Server ----"
brew install postgresql
echo "\n---- Creating the ODOO PostgreSQL User ----"
sudo su - postgres -c "createuser -s ${OE_USER}" 2> /dev/null || true
echo "\n---- Creating the ERPLibre PostgreSQL User ----"
sudo su - postgres -c "createuser -s ${EL_USER}" 2> /dev/null || true
#--------------------------------------------------
# Install Dependencies

77
script/install_daemon.sh Executable file
View file

@ -0,0 +1,77 @@
#!/usr/bin/env bash
. ./env_var.sh
#EL_USER="erplibre"
#EL_HOME="/${EL_USER}"
#EL_HOME_ERPLIBRE="${EL_HOME}/erplibre"
#EL_HOME_ODOO="${EL_HOME_ERPLIBRE}/odoo"
#EL_INSTALL_WKHTMLTOPDF="True"
#EL_PORT="8069"
#EL_SUPERADMIN="admin"
#EL_CONFIG="${EL_USER}"
#--------------------------------------------------
# Adding ERPLibre as a daemon with SystemD
#--------------------------------------------------
echo -e "\n* Create init file"
sudo rm -f /tmp/${EL_CONFIG}
cat <<EOF > /tmp/${EL_CONFIG}
[Unit]
Description=${EL_USER}
Requires=postgresql.service
After=network.target network-online.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=${EL_USER}
PermissionsStartOnly=true
User=${EL_USER}
Group=${EL_USER}
Restart=always
RestartSec=5
PIDFile=${EL_HOME_ERPLIBRE}/venv/service.pid
ExecStart=${EL_HOME_ERPLIBRE}/venv/run.sh
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
EOF
echo -e "* Security Init File"
sudo cp /tmp/${EL_CONFIG} /etc/systemd/system/${EL_CONFIG}.service
sudo chmod 755 /etc/systemd/system/${EL_CONFIG}.service
sudo chown root: /etc/systemd/system/${EL_CONFIG}.service
echo -e "* Start ERPLibre on Startup"
sudo systemctl daemon-reload
sudo systemctl enable ${EL_CONFIG}.service
sudo su ${EL_USER} -c "sudo rm -f /tmp/${EL_USER}run.sh"
cat <<EOF > /tmp/${EL_USER}run.sh
#!/usr/bin/env bash
cd ${EL_HOME_ERPLIBRE}
source ./venv/bin/activate
python3 ${EL_HOME_ERPLIBRE}/odoo/odoo-bin -c ${EL_HOME_ERPLIBRE}/config.conf $@
EOF
echo -e "* Security Run File"
sudo cp /tmp/${EL_USER}run.sh ${EL_HOME_ERPLIBRE}/venv/run.sh
sudo chmod 755 ${EL_HOME_ERPLIBRE}/venv/run.sh
sudo chown ${EL_USER}: ${EL_HOME_ERPLIBRE}/venv/run.sh
echo "-----------------------------------------------------------"
echo "Done! The ERPLibre server is up and running. Specifications:"
echo "Port: ${EL_PORT}"
echo "Port Long Polling: ${EL_LONGPOLLING_PORT}"
echo "User service: ${EL_USER}"
echo "User PostgreSQL: ${EL_USER}"
echo "Code location: ${EL_USER}"
echo "Addons folder: ${EL_USER}/${EL_CONFIG}/addons/"
echo "Start ERPLibre service: sudo systemctl start ${EL_CONFIG}"
echo "Stop ERPLibre service: sudo systemctl stop ${EL_CONFIG}"
echo "Restart ERPLibre service: sudo systemctl restart ${EL_CONFIG}"
echo "-----------------------------------------------------------"
echo -e "* Starting ERPLibre Service"
sudo systemctl restart ${EL_CONFIG}.service

View file

@ -1,19 +1,9 @@
#!/bin/bash
################################################################################
# Script for installing Odoo on Ubuntu 14.04, 15.04, 16.04 and 18.04 (could be used for other version too)
# Author: Yenthe Van Ginneken
#-------------------------------------------------------------------------------
# This script will install Odoo on your Ubuntu 16.04 server. It can install multiple Odoo instances
# in one Ubuntu because of the different xmlrpc_ports
#-------------------------------------------------------------------------------
################################################################################
#!/usr/bin/env bash
. ./env_var.sh
OE_USER=$(whoami)
# The default port where this Odoo instance will run under (provided you use the command -c in the terminal)
# Set to true if you want to install it, false if you don't need it or have it already installed.
#INSTALL_WKHTMLTOPDF="True"
EL_USER=$(whoami)
#EL_INSTALL_WKHTMLTOPDF="True"
##
### WKHTMLTOPDF download links
@ -43,30 +33,30 @@ sudo apt-get upgrade -y
echo -e "\n---- Install PostgreSQL Server ----"
sudo apt-get install postgresql -y
echo -e "\n---- Creating the ODOO PostgreSQL User ----"
sudo su - postgres -c "createuser -s $OE_USER" 2> /dev/null || true
echo -e "\n---- Creating the ERPLibre PostgreSQL User ----"
sudo su - postgres -c "createuser -s $EL_USER" 2> /dev/null || true
#--------------------------------------------------
# Install Dependencies
#--------------------------------------------------
echo -e "\n--- Installing Python 3 + pip3 --"
sudo apt-get install git python3 python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less libpng12-0 gdebi -y
sudo apt-get install git python3 python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less libpng12-0 gdebi-core -y
echo -e "\n---- Installing nodeJS NPM and rtlcss for LTR support ----"
sudo apt-get install nodejs npm -y
sudo npm install -g rtlcss
if [ ${INSTALL_NGINX} = "True" ]; then
if [ ${EL_INSTALL_NGINX} = "True" ]; then
sudo apt install nginx -y
fi
#--------------------------------------------------
# Install Wkhtmltopdf if needed
#--------------------------------------------------
if [ ${INSTALL_WKHTMLTOPDF} = "True" ]; then
if [ ${EL_INSTALL_WKHTMLTOPDF} = "True" ]; then
INSTALLED=$(dpkg -s wkhtmltox|grep installed)
if [ "" == "${INSTALLED}" ]; then
echo -e "\n---- Install wkhtml and place shortcuts on correct place for ODOO 12 ----"
echo -e "\n---- Install wkhtml and place shortcuts on correct place ----"
#pick up correct one from x64 & x32 versions:
if [ "`getconf LONG_BIT`" == "64" ];then
_url=$WKHTMLTOX_X64

View file

@ -1,22 +1,18 @@
#!/bin/bash
#!/usr/bin/env bash
################################################################################
# Script for installing Odoo locally for dev
# Script for installing ERPLibre locally for dev
# Author: Alexandre Ferreira Benevides
################################################################################
. ./env_var.sh
if [[ "${OSTYPE}" == "linux-gnu" ]]; then
OS=$(lsb_release -si)
if [[ "${OS}" == "Ubuntu" ]]; then
echo "\n---- linux-gnu installation process started ----"
./script/odoo_install_debian_dependancy.sh
./script/odoo_install_locally.sh
./script/install_debian_dependancy.sh
else
echo "Your Linux system is not supported."
fi
elif [[ "${OSTYPE}" == "darwin"* ]]; then
echo "\n---- Darwin installation process started ----"
./script/odoo_install_OSX_dependancy.sh
./script/odoo_install_locally.sh
./script/install_OSX_dependancy.sh
fi

163
script/install_locally.sh Executable file
View file

@ -0,0 +1,163 @@
#!/usr/bin/env bash
. ./env_var.sh
EL_USER=$(whoami)
EL_HOME=$PWD
EL_HOME_ODOO="${EL_HOME}/odoo"
#EL_INSTALL_WKHTMLTOPDF="True"
#EL_PORT="8069"
#EL_LONGPOLLING_PORT="8072"
#EL_SUPERADMIN="admin"
EL_CONFIG_FILE="${EL_HOME}/config.conf"
#EL_CONFIG="${EL_USER}"
#EL_MINIMAL_ADDONS="False"
#EL_INSTALL_NGINX="True"
if hash python3.7 2>/dev/null; then
PYTHON37="True"
PYTHON36="False"
elif hash python3.6 2>/dev/null; then
PYTHON37="False"
PYTHON36="True"
else
echo "Missing python3.7 or python3.6. Python3.8 is not compatible."
exit 1
fi
echo -e "* Create server config file"
touch ${EL_CONFIG_FILE}
echo -e "* Creating server config file"
printf '[options] \n; This is the password that allows database operations:\n' > ${EL_CONFIG_FILE}
printf "admin_passwd = ${EL_SUPERADMIN}\n" >> ${EL_CONFIG_FILE}
printf "db_host = False\n" >> ${EL_CONFIG_FILE}
printf "db_port = False\n" >> ${EL_CONFIG_FILE}
printf "db_user = ${EL_USER}\n" >> ${EL_CONFIG_FILE}
printf "db_password = False\n" >> ${EL_CONFIG_FILE}
printf "xmlrpc_port = ${EL_PORT}\n" >> ${EL_CONFIG_FILE}
printf "longpolling_port = ${EL_LONGPOLLING_PORT}\n" >> ${EL_CONFIG_FILE}
printf "addons_path = ${EL_HOME_ODOO}/addons,${EL_HOME}/addons/addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_web," >> ${EL_CONFIG_FILE}
if [[ $EL_MINIMAL_ADDONS = "False" ]]; then
printf "${EL_HOME}/addons/ERPLibre_erplibre_addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/MathBenTech_development," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/MathBenTech_odoo-business-spending-management-quebec-canada," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/MathBenTech_scrummer," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Numigi_odoo-base-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Numigi_odoo-entertainment-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Numigi_odoo-git-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Numigi_odoo-hr-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Numigi_odoo-partner-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Numigi_odoo-product-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Numigi_odoo-project-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Numigi_odoo-purchase-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Numigi_odoo-stock-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Numigi_odoo-survey-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Numigi_odoo-timesheet-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Numigi_odoo-web-addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_account-analytic," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_account-budgeting," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_account-closing," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_account-consolidation," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_account-financial-reporting," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_account-financial-tools," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_account-fiscal-rule," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_account-invoice-reporting," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_account-invoicing," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_account-payment," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_account-reconcile," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_apps-store," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_bank-payment," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_bank-statement-import," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_brand," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_business-requirement," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_commission," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_community-data-files," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_connector-telephony," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_contract," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_credit-control," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_currency," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_data-protection," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_donation," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_e-commerce," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_edi," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_event," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_helpdesk," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_hr," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_knowledge," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_l10n-canada," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_maintenance," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_management-system," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_manufacture," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_margin-analysis," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_mis-builder," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_multi-company," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_partner-contact," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_pos," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_product-attribute," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_product-pack," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_product-variant," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_project," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_project-reporting," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_purchase-workflow," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_queue," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_reporting-engine," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_sale-workflow," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_server-auth," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_server-brand," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_server-env," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_server-tools," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_server-ux," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_social," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_stock-logistics-warehouse," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_timesheet," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_website," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/OCA_wms," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/SanteLibre_santelibre_addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/Smile-SA_odoo_addons," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_base," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_dms," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_docs," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_misc," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_quality," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_web," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/muk-it_muk_website," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/odooaktiv_QuotationRevision," >> ${EL_CONFIG_FILE}
printf "${EL_HOME}/addons/openeducat_openeducat_erp," >> ${EL_CONFIG_FILE}
fi
printf "\n" >> ${EL_CONFIG_FILE}
printf "workers = 0\n" >> ${EL_CONFIG_FILE}
printf "max_cron_threads = 2\n" >> ${EL_CONFIG_FILE}
if [ ${EL_INSTALL_NGINX} = "True" ]; then
printf "xmlrpc_interface = 127.0.0.1\n" >> ${EL_CONFIG_FILE}
printf "netrpc_interface = 127.0.0.1\n" >> ${EL_CONFIG_FILE}
printf "proxy_mode = True\n" >> ${EL_CONFIG_FILE}
fi
echo -e "\n---- Install Odoo with addons module ----"
git submodule update --init
# Generate empty addons if missing
if [ ! -d "./addons/addons" ]; then
mkdir -p ./addons/addons
fi
echo -e "\n---- Create Virtual environment Python ----"
cd ${EL_HOME}
if [[ ${PYTHON37} = "True" ]]; then
python3.7 -m venv venv
elif [[ ${PYTHON36} = "True" ]]; then
python3.6 -m venv venv
fi
cd -
# Install git-repo if missing
if [ ! -f "./venv/repo" ]; then
echo "Install git-repo from Google APIS"
curl https://storage.googleapis.com/git-repo-downloads/repo > ./venv/repo
chmod +x ./venv/repo
fi

44
script/install_locally_dev.sh Executable file
View file

@ -0,0 +1,44 @@
#!/usr/bin/env bash
. ./env_var.sh
EL_USER=$(whoami)
EL_HOME=$PWD
EL_HOME_ODOO="${EL_HOME}/odoo"
#EL_INSTALL_WKHTMLTOPDF="True"
#EL_PORT="8069"
#EL_LONGPOLLING_PORT="8072"
#EL_SUPERADMIN="admin"
EL_CONFIG_FILE="${EL_HOME}/config.conf"
#EL_CONFIG="${EL_USER}"
#EL_MINIMAL_ADDONS="False"
#EL_INSTALL_NGINX="True"
#EL_MANIFEST_PROD="./manifest/default.xml"
#EL_MANIFEST_DEV="./manifest/default.dev.xml"
./script/install_locally.sh
# Update git-repo
git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose &
DAEMON_PID=$!
./venv/repo init -u git://127.0.0.1:9418/ -b $(git rev-parse --abbrev-ref HEAD) -m ${EL_MANIFEST_DEV}
./venv/repo sync -m ${EL_MANIFEST_DEV}
kill ${DAEMON_PID}
echo -e "\n---- Install python packages/requirements ----"
${EL_HOME}/venv/bin/pip3 install --upgrade pip
${EL_HOME}/venv/bin/pip3 install wheel phonenumbers
${EL_HOME}/venv/bin/pip3 install -r "${EL_HOME}/odoo/requirements.txt"
${EL_HOME}/venv/bin/pip3 install -r "${EL_HOME}/requirements.txt"
# For dev/testing
${EL_HOME}/venv/bin/pip3 install websocket-client
echo -e "\n---- Add link dependency in site-packages of Python ----"
if [[ ${PYTHON37} = "True" ]]; then
ln -fs ${EL_HOME_ODOO}/odoo ${EL_HOME}/venv/lib/python3.7/site-packages/
elif [[ ${PYTHON36} = "True" ]]; then
ln -fs ${EL_HOME_ODOO}/odoo ${EL_HOME}/venv/lib/python3.6/site-packages/
fi

40
script/install_locally_prod.sh Executable file
View file

@ -0,0 +1,40 @@
#!/usr/bin/env bash
. ./env_var.sh
EL_USER=$(whoami)
EL_HOME=$PWD
EL_HOME_ODOO="${EL_HOME}/odoo"
#EL_INSTALL_WKHTMLTOPDF="True"
#EL_PORT="8069"
#EL_LONGPOLLING_PORT="8072"
#EL_SUPERADMIN="admin"
EL_CONFIG_FILE="${EL_HOME}/config.conf"
#EL_CONFIG="${EL_USER}"
#EL_MINIMAL_ADDONS="False"
#EL_INSTALL_NGINX="True"
#EL_MANIFEST_PROD="./manifest/default.xml"
#EL_MANIFEST_DEV="./manifest/default.dev.xml"
./script/install_locally.sh
# Update git-repo
./venv/repo init -u http://git.erplibre.ca/ERPLibre -b 12.0_repo
#./venv/repo sync --force-sync
./venv/repo sync
echo -e "\n---- Install python packages/requirements ----"
${EL_HOME}/venv/bin/pip3 install --upgrade pip
${EL_HOME}/venv/bin/pip3 install wheel phonenumbers
${EL_HOME}/venv/bin/pip3 install -r "${EL_HOME}/odoo/requirements.txt"
${EL_HOME}/venv/bin/pip3 install -r "${EL_HOME}/requirements.txt"
# For dev/testing
${EL_HOME}/venv/bin/pip3 install websocket-client
echo -e "\n---- Add link dependency in site-packages of Python ----"
if [[ ${PYTHON37} = "True" ]]; then
ln -fs ${EL_HOME_ODOO}/odoo ${EL_HOME}/venv/lib/python3.7/site-packages/
elif [[ ${PYTHON36} = "True" ]]; then
ln -fs ${EL_HOME_ODOO}/odoo ${EL_HOME}/venv/lib/python3.6/site-packages/
fi

48
script/install_production.sh Executable file
View file

@ -0,0 +1,48 @@
#!/usr/bin/env bash
. ./env_var.sh
./script/install_debian_dependancy.sh
echo -e "\n---- Create ERPLIBRE system user ----"
sudo adduser --system --quiet --shell=/bin/bash --home=/${EL_USER} --gecos 'ERPLIBRE' --group ${EL_USER}
#The user should also be added to the sudo'ers group.
sudo adduser ${EL_USER} sudo
echo -e "\n---- Creating the ERPLIBRE PostgreSQL User ----"
sudo su - postgres -c "createuser -s ${EL_USER}" 2> /dev/null || true
#echo -e "\n---- Create Log directory ----"
#sudo mkdir /var/log/${EL_USER}
#sudo chown ${EL_USER}:${EL_USER} /var/log/${EL_USER}
echo -e "\n---- Setting permissions on home folder ----"
sudo mkdir -p ${EL_HOME}
sudo chown -R ${EL_USER}:${EL_USER} ${EL_HOME}
#--------------------------------------------------
# Install ERPLIBRE
#--------------------------------------------------
echo -e "\n==== Clone this installation ===="
REMOTE_URL_GIT=`git remote get-url origin`
BRANCH_GIT=`git rev-parse --abbrev-ref HEAD`
sudo su ${EL_USER} -c "git clone --branch ${BRANCH_GIT} ${REMOTE_URL_GIT} ${EL_HOME_ERPLIBRE}"
sudo cp ./env_var.sh ${EL_HOME_ERPLIBRE}
sudo chown -R ${EL_USER}:${EL_USER} ${EL_HOME_ERPLIBRE}/env_var.sh
LAST_PWD=$PWD
cd ${EL_HOME_ERPLIBRE}
sudo su ${EL_USER} -c "./script/install_locally_prod.sh"
cd ${LAST_PWD}
#echo -e "\n* Updating server config file"
#sudo su ${EL_USER} -c "printf 'logfile = /var/log/${EL_USER}/${EL_CONFIG}.log\n' >> /${EL_USER}/erplibre/config.conf"
#--------------------------------------------------
# Adding ERPLIBRE as a daemon
#--------------------------------------------------
./script/install_daemon.sh
#--------------------------------------------------
# Install Nginx if needed
#--------------------------------------------------
./script/install_production_nginx.sh

View file

@ -1,34 +1,26 @@
#!/bin/bash
################################################################################
# Script for installing Odoo on Ubuntu 14.04, 15.04, 16.04 and 18.04 (could be used for other version too)
# Author: Yenthe Van Ginneken
#-------------------------------------------------------------------------------
# This script will install Odoo on your Ubuntu 16.04 server. It can install multiple Odoo instances
# in one Ubuntu because of the different xmlrpc_ports
#-------------------------------------------------------------------------------
################################################################################
#!/usr/bin/env bash
. ./env_var.sh
#--------------------------------------------------
# Install Nginx if needed
#--------------------------------------------------
if [ ${INSTALL_NGINX} = "True" ]; then
if [ ${EL_INSTALL_NGINX} = "True" ]; then
echo -e "\n---- Installing and setting up Nginx ----"
cat <<EOF > /tmp/nginx${OE_USER}
upstream odoo${OE_USER} {
server 127.0.0.1:${OE_PORT};
cat <<EOF > /tmp/nginx${EL_USER}
upstream erplibre${EL_USER} {
server 127.0.0.1:${EL_PORT};
}
upstream odoo${OE_USER}chat {
server 127.0.0.1:${OE_LONGPOLLING_PORT};
upstream erplibre${EL_USER}chat {
server 127.0.0.1:${EL_LONGPOLLING_PORT};
}
server {
listen 80;
server_name ${WEBSITE_NAME};
server_name ${EL_WEBSITE_NAME};
# Add Headers for odoo proxy mode
# Add Headers for erplibre proxy mode
proxy_set_header X-Forwarded-Host \$host;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
@ -36,9 +28,9 @@ server {
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
# odoo request log files
access_log /var/log/nginx/${OE_USER}-access.log;
error_log /var/log/nginx/${OE_USER}-error.log;
# erplibre request log files
access_log /var/log/nginx/${EL_USER}-access.log;
error_log /var/log/nginx/${EL_USER}-error.log;
# Increase proxy buffer size
proxy_buffers 16 64k;
@ -68,13 +60,13 @@ server {
client_max_body_size 1024M;
location / {
proxy_pass http://odoo${OE_USER};
proxy_pass http://erplibre${EL_USER};
# by default, do not forward anything
proxy_redirect off;
}
location /longpolling {
proxy_pass http://odoo${OE_USER}chat;
proxy_pass http://erplibre${EL_USER}chat;
}
# cache some static data in memory for 60mins.
@ -83,16 +75,16 @@ server {
proxy_cache_valid 404 1m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo${OE_USER};
proxy_pass http://erplibre${EL_USER};
}
}
EOF
sudo mv -f /tmp/nginx${OE_USER} /etc/nginx/sites-available/${WEBSITE_NAME}
sudo ln -fs /etc/nginx/sites-available/${WEBSITE_NAME} /etc/nginx/sites-enabled/${WEBSITE_NAME}
sudo mv -f /tmp/nginx${EL_USER} /etc/nginx/sites-available/${EL_WEBSITE_NAME}
sudo ln -fs /etc/nginx/sites-available/${EL_WEBSITE_NAME} /etc/nginx/sites-enabled/${EL_WEBSITE_NAME}
sudo rm -f /etc/nginx/sites-enabled/default /etc/nginx/sites-available/default
sudo systemctl restart nginx
echo "Done! The Nginx server is up and running. Configuration can be found at /etc/nginx/sites-enabled/${WEBSITE_NAME}"
echo "Done! The Nginx server is up and running. Configuration can be found at /etc/nginx/sites-enabled/${EL_WEBSITE_NAME}"
echo "Run manually certbot : sudo certbot --nginx"
else
echo "Nginx isn't installed due to choice of the user!"

View file

@ -1,110 +0,0 @@
#!/usr/bin/env python
import os
import sys
import webbrowser
import argparse
import logging
from git import Repo
from retrying import retry # pip install retrying
new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), '..'))
sys.path.append(new_path)
from script.git_tool import GitTool
from script import fork_github_repo
_logger = logging.getLogger(__name__)
CST_GITHUB_TOKEN = "GITHUB_TOKEN"
def get_config():
"""Parse command line arguments, extracting the config file name,
returning the union of config file and command line arguments
:return: dict of config file settings and command line arguments
"""
# TODO update description
parser = argparse.ArgumentParser(
formatter_class=argparse.RawDescriptionHelpFormatter,
description='''\
''',
epilog='''\
'''
)
parser.add_argument('-d', '--dir', dest="dir", default="./",
help="Path of repo to change remote, including submodule.")
args = parser.parse_args()
return args
def main():
config = get_config()
lst_repo = GitTool.get_repo_info_submodule(repo_path=config.dir)
branch_search = "12.0"
# repo = Repo(root_path)
# repo_root = Repo(".")
lst_result = []
i = 0
total = len(lst_repo)
for repo in lst_repo:
i += 1
print(f"Nb element {i}/{total}")
repo_dir_root = repo.get("path")
remote_path = f"{config.dir}/{repo_dir_root}"
repo_root = Repo(remote_path)
repo_branch_search_sha = [a.object.hexsha for a in repo_root.branches if
branch_search in a.name]
if repo_branch_search_sha:
repo_branch_search_sha = repo_branch_search_sha[0]
else:
print(f"Error, missing branch {branch_search} in {remote_path}")
continue
lst_result.append((remote_path, repo_root.head.commit.hexsha,
repo_root.head.commit.hexsha != repo_branch_search_sha))
# print(repo_root)
# # Create the remote upstream
# split_url = url.split("/")
# split_url[-2] = upstream_name
# upstream_url = "/".join(split_url)
#
# cloned_repo = Repo(repo_dir_root)
# try:
# upstream_remote = cloned_repo.remote(upstream_name)
# print('Remote "%s" already exists in %s' %
# (upstream_name, repo_dir_root))
# except ValueError:
# upstream_remote = retry(
# wait_exponential_multiplier=1000,
# stop_max_delay=15000
# )(cloned_repo.create_remote)(upstream_name, upstream_url)
# print('Remote "%s" created for %s' % (upstream_name, upstream_url))
#
# try:
# # Fetch the remote upstream
# retry(wait_exponential_multiplier=1000, stop_max_delay=15000)(
# upstream_remote.fetch)()
# print('Remote "%s" fetched' % upstream_name)
# except Exception:
# print(f"ERROR git {repo_dir_root} remote {upstream_name} not exist.")
# upstream_remote.remove(upstream_remote, upstream_name)
i = 0
i_len = len(lst_result)
for path, hash, diff in lst_result:
i += 1
if diff:
print(f"{i:02d}/{i_len} {diff} {path}\t{hash}")
# lst_repo = GitTool.get_repo_info_from_data_structure()
# for repo in lst_repo:
# repo_dir_root = repo.get("path")
# repo_root = Repo(remote_path)
# repo_root.git.checkout()
if __name__ == '__main__':
main()

View file

@ -1,88 +0,0 @@
#!/bin/bash
################################################################################
# Script for installing Odoo on Ubuntu 14.04, 15.04, 16.04 and 18.04 (could be used for other version too)
# Author: Yenthe Van Ginneken
#-------------------------------------------------------------------------------
# This script will install Odoo on your Ubuntu 16.04 server. It can install multiple Odoo instances
# in one Ubuntu because of the different xmlrpc_ports
#-------------------------------------------------------------------------------
################################################################################
. ./env_var.sh
#OE_USER="odoo"
#OE_HOME="/${OE_USER}/odoo"
#OE_HOME_EXT="/${OE_USER}/odoo/odoo/odoo"
## The default port where this Odoo instance will run under (provided you use the command -c in the terminal)
## Set to true if you want to install it, false if you don't need it or have it already installed.
#INSTALL_WKHTMLTOPDF="True"
## Set the default Odoo port (you still have to use -c /etc/odoo-server.conf for example to use this.)
#OE_PORT="8069"
## set the superadmin password
#OE_SUPERADMIN="admin"
#OE_CONFIG="${OE_USER}"
#--------------------------------------------------
# Adding ODOO as a deamon with SystemD
#--------------------------------------------------
echo -e "\n* Create init file"
sudo rm -f /tmp/${OE_CONFIG}
cat <<EOF > /tmp/${OE_CONFIG}
[Unit]
Description=${OE_USER}
Requires=postgresql.service
After=network.target network-online.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=${OE_USER}
PermissionsStartOnly=true
User=${OE_USER}
Group=${OE_USER}
Restart=always
RestartSec=5
PIDFile=${OE_HOME_ODOO}/venv/service.pid
ExecStart=${OE_HOME_ODOO}/venv/run.sh
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
EOF
echo -e "* Security Init File"
sudo cp /tmp/${OE_CONFIG} /etc/systemd/system/${OE_CONFIG}.service
sudo chmod 755 /etc/systemd/system/${OE_CONFIG}.service
sudo chown root: /etc/systemd/system/${OE_CONFIG}.service
echo -e "* Start ODOO on Startup"
sudo systemctl daemon-reload
sudo systemctl enable ${OE_CONFIG}.service
sudo su ${OE_USER} -c "sudo rm -f /tmp/${OE_USER}run.sh"
cat <<EOF > /tmp/${OE_USER}run.sh
#!/usr/bin/env bash
cd ${OE_HOME_ODOO}
source ./venv/bin/activate
python3 ${OE_HOME_ODOO}/odoo/odoo-bin -c ${OE_HOME_ODOO}/config.conf
EOF
echo -e "* Security Run File"
sudo cp /tmp/${OE_USER}run.sh ${OE_HOME_ODOO}/venv/run.sh
sudo chmod 755 ${OE_HOME_ODOO}/venv/run.sh
sudo chown ${OE_USER}: ${OE_HOME_ODOO}/venv/run.sh
echo "-----------------------------------------------------------"
echo "Done! The Odoo server is up and running. Specifications:"
echo "Port: ${OE_PORT}"
echo "Port Long Polling: ${OE_LONGPOLLING_PORT}"
echo "User service: ${OE_USER}"
echo "User PostgreSQL: ${OE_USER}"
echo "Code location: ${OE_USER}"
echo "Addons folder: ${OE_USER}/${OE_CONFIG}/addons/"
echo "Start Odoo service: sudo systemctl start ${OE_CONFIG}"
echo "Stop Odoo service: sudo systemctl stop ${OE_CONFIG}"
echo "Restart Odoo service: sudo systemctl restart ${OE_CONFIG}"
echo "-----------------------------------------------------------"
echo -e "* Starting Odoo Service"
sudo systemctl restart ${OE_CONFIG}.service

View file

@ -1,188 +0,0 @@
#!/bin/bash
################################################################################
# Script for installing Odoo on Ubuntu 14.04, 15.04, 16.04 and 18.04 (could be used for other version too)
# Author: Yenthe Van Ginneken
#-------------------------------------------------------------------------------
# This script will install Odoo on your Ubuntu 16.04 server. It can install multiple Odoo instances
# in one Ubuntu because of the different xmlrpc_ports
#-------------------------------------------------------------------------------
# Make a new file:
# sudo nano odoo-install.sh
# Place this content in it and then make the file executable:
# sudo chmod +x odoo-install.sh
# Execute the script to install Odoo:
# ./odoo-install
################################################################################
. ./env_var.sh
OE_USER=$(whoami)
OE_HOME=$PWD
OE_HOME_EXT="${OE_HOME}/odoo"
# The default port where this Odoo instance will run under (provided you use the command -c in the terminal)
# Set to true if you want to install it, false if you don't need it or have it already installed.
#INSTALL_WKHTMLTOPDF="True"
# Set the default Odoo port (you still have to use -c /etc/odoo-server.conf for example to use this.)
#OE_PORT="8069"
#OE_LONGPOLLING_PORT="8072"
# Choose the Odoo version which you want to install. For example: 12.0, 11.0, 10.0 or saas-18. When using 'master' the master version will be installed.
# IMPORTANT! This script contains extra libraries that are specifically needed for Odoo 12.0
#OE_VERSION="stable_prod_12.0"
# set the superadmin password
#OE_SUPERADMIN="admin"
OE_CONFIG_FILE="${OE_HOME}/config.conf"
#OE_CONFIG="${OE_USER}"
#MINIMAL_ADDONS="False"
#INSTALL_NGINX="True"
if hash python3.7 2>/dev/null; then
PYTHON37="True"
PYTHON36="False"
elif hash python3.6 2>/dev/null; then
PYTHON37="False"
PYTHON36="True"
else
echo "Missing python3.7 or python3.6. Python3.8 is not compatible."
exit 1
fi
echo -e "* Create server config file"
touch ${OE_CONFIG_FILE}
echo -e "* Creating server config file"
printf '[options] \n; This is the password that allows database operations:\n' > ${OE_CONFIG_FILE}
printf "admin_passwd = ${OE_SUPERADMIN}\n" >> ${OE_CONFIG_FILE}
printf "db_host = False\n" >> ${OE_CONFIG_FILE}
printf "db_port = False\n" >> ${OE_CONFIG_FILE}
printf "db_user = ${OE_USER}\n" >> ${OE_CONFIG_FILE}
printf "db_password = False\n" >> ${OE_CONFIG_FILE}
printf "xmlrpc_port = ${OE_PORT}\n" >> ${OE_CONFIG_FILE}
printf "longpolling_port = ${OE_LONGPOLLING_PORT}\n" >> ${OE_CONFIG_FILE}
printf "addons_path = ${OE_HOME_EXT}/addons,${OE_HOME}/addons/addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_web," >> ${OE_CONFIG_FILE}
if [[ $MINIMAL_ADDONS = "False" ]]; then
printf "${OE_HOME}/addons/ERPLibre_erplibre_addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/MathBenTech_development," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/MathBenTech_odoo-business-spending-management-quebec-canada," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/MathBenTech_scrummer," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Numigi_odoo-base-addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Numigi_odoo-entertainment-addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Numigi_odoo-git-addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Numigi_odoo-hr-addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Numigi_odoo-partner-addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Numigi_odoo-product-addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Numigi_odoo-project-addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Numigi_odoo-purchase-addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Numigi_odoo-stock-addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Numigi_odoo-survey-addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Numigi_odoo-timesheet-addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Numigi_odoo-web-addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_account-analytic," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_account-budgeting," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_account-closing," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_account-consolidation," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_account-financial-reporting," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_account-financial-tools," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_account-fiscal-rule," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_account-invoice-reporting," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_account-invoicing," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_account-payment," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_account-reconcile," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_apps-store," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_bank-payment," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_bank-statement-import," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_brand," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_business-requirement," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_commission," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_community-data-files," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_connector-telephony," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_contract," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_credit-control," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_currency," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_data-protection," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_donation," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_e-commerce," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_edi," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_event," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_helpdesk," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_hr," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_knowledge," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_l10n-canada," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_maintenance," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_management-system," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_manufacture," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_margin-analysis," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_mis-builder," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_multi-company," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_partner-contact," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_pos," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_product-attribute," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_product-pack," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_product-variant," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_project," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_project-reporting," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_purchase-workflow," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_queue," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_reporting-engine," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_sale-workflow," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_server-auth," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_server-brand," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_server-env," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_server-tools," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_server-ux," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_social," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_stock-logistics-warehouse," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_timesheet," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_website," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_wms," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/SanteLibre_santelibre_addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Smile-SA_odoo_addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/muk-it_muk_base," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/muk-it_muk_dms," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/muk-it_muk_docs," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/muk-it_muk_misc," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/muk-it_muk_quality," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/muk-it_muk_web," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/muk-it_muk_website," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/odooaktiv_QuotationRevision," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/openeducat_openeducat_erp," >> ${OE_CONFIG_FILE}
fi
printf "\n" >> ${OE_CONFIG_FILE}
printf "workers = 0\n" >> ${OE_CONFIG_FILE}
printf "max_cron_threads = 2\n" >> ${OE_CONFIG_FILE}
if [ ${INSTALL_NGINX} = "True" ]; then
printf "xmlrpc_interface = 127.0.0.1\n" >> ${OE_CONFIG_FILE}
printf "netrpc_interface = 127.0.0.1\n" >> ${OE_CONFIG_FILE}
printf "proxy_mode = True\n" >> ${OE_CONFIG_FILE}
fi
echo -e "\n---- Install Odoo with addons module ----"
git submodule update --init
echo -e "\n---- Create Virtual environment Python ----"
cd ${OE_HOME}
if [[ ${PYTHON37} = "True" ]]; then
python3.7 -m venv venv
elif [[ ${PYTHON36} = "True" ]]; then
python3.6 -m venv venv
fi
cd -
echo -e "\n---- Install python packages/requirements ----"
${OE_HOME}/venv/bin/pip3 install --upgrade pip
${OE_HOME}/venv/bin/pip3 install wheel phonenumbers
${OE_HOME}/venv/bin/pip3 install -r "${OE_HOME}/odoo/requirements.txt"
${OE_HOME}/venv/bin/pip3 install -r "${OE_HOME}/requirements.txt"
# For dev/testing
${OE_HOME}/venv/bin/pip3 install websocket-client
echo -e "\n---- Add link dependency in site-packages of Python ----"
if [[ ${PYTHON37} = "True" ]]; then
ln -fs ${OE_HOME_EXT}/odoo ${OE_HOME}/venv/lib/python3.7/site-packages/
elif [[ ${PYTHON36} = "True" ]]; then
ln -fs ${OE_HOME_EXT}/odoo ${OE_HOME}/venv/lib/python3.6/site-packages/
fi

View file

@ -1,56 +0,0 @@
#!/bin/bash
################################################################################
# Script for installing Odoo on Ubuntu 14.04, 15.04, 16.04 and 18.04 (could be used for other version too)
# Author: Yenthe Van Ginneken
#-------------------------------------------------------------------------------
# This script will install Odoo on your Ubuntu 16.04 server. It can install multiple Odoo instances
# in one Ubuntu because of the different xmlrpc_ports
#-------------------------------------------------------------------------------
################################################################################
. ./env_var.sh
./script/odoo_install_debian_dependancy.sh
echo -e "\n---- Create ODOO system user ----"
sudo adduser --system --quiet --shell=/bin/bash --home=/${OE_USER} --gecos 'ODOO' --group ${OE_USER}
#The user should also be added to the sudo'ers group.
sudo adduser ${OE_USER} sudo
echo -e "\n---- Creating the ODOO PostgreSQL User ----"
sudo su - postgres -c "createuser -s ${OE_USER}" 2> /dev/null || true
#echo -e "\n---- Create Log directory ----"
#sudo mkdir /var/log/${OE_USER}
#sudo chown ${OE_USER}:${OE_USER} /var/log/${OE_USER}
echo -e "\n---- Setting permissions on home folder ----"
sudo mkdir -p ${OE_HOME}
sudo chown -R ${OE_USER}:${OE_USER} ${OE_HOME}
#--------------------------------------------------
# Install ODOO
#--------------------------------------------------
echo -e "\n==== Clone this installation ===="
REMOTE_URL_GIT=`git remote get-url origin`
BRANCH_GIT=`git rev-parse --abbrev-ref HEAD`
sudo su ${OE_USER} -c "git clone --branch ${BRANCH_GIT} ${REMOTE_URL_GIT} ${OE_HOME_ODOO}"
sudo cp ./env_var.sh ${OE_HOME_ODOO}
sudo chown -R ${OE_USER}:${OE_USER} ${OE_HOME_ODOO}/env_var.sh
LAST_PWD=$PWD
cd ${OE_HOME_ODOO}
sudo su ${OE_USER} -c "./script/odoo_install_locally.sh"
cd ${LAST_PWD}
#echo -e "\n* Updating server config file"
#sudo su ${OE_USER} -c "printf 'logfile = /var/log/${OE_USER}/${OE_CONFIG}.log\n' >> /${OE_USER}/odoo/config.conf"
#--------------------------------------------------
# Adding ODOO as a daemon
#--------------------------------------------------
./script/odoo_install_daemon.sh
#--------------------------------------------------
# Install Nginx if needed
#--------------------------------------------------
./script/odoo_install_production_nginx.sh

88
source_repo_addons.csv Normal file
View file

@ -0,0 +1,88 @@
url,path,revision,clone-depth
https://github.com/ERPLibre/erplibre_addons.git,addons,,
https://github.com/MathBenTech/development.git,addons,,
https://github.com/MathBenTech/odoo-business-spending-management-quebec-canada.git,addons,stable_prod_12.0,
https://github.com/MathBenTech/scrummer.git,addons,,
https://github.com/muk-it/muk_base.git,addons,,
https://github.com/muk-it/muk_dms.git,addons,,
https://github.com/muk-it/muk_docs.git,addons,,
https://github.com/muk-it/muk_misc.git,addons,,
https://github.com/muk-it/muk_quality.git,addons,,
https://github.com/muk-it/muk_web.git,addons,,
https://github.com/muk-it/muk_website.git,addons,,
https://github.com/Numigi/odoo-base-addons.git,addons,,
https://github.com/Numigi/odoo-entertainment-addons.git,addons,,
https://github.com/Numigi/odoo-git-addons.git,addons,,
https://github.com/Numigi/odoo-hr-addons.git,addons,,
https://github.com/Numigi/odoo-partner-addons.git,addons,,
https://github.com/Numigi/odoo-product-addons.git,addons,,
https://github.com/Numigi/odoo-project-addons.git,addons,,
https://github.com/Numigi/odoo-purchase-addons.git,addons,,
https://github.com/Numigi/odoo-stock-addons.git,addons,,
https://github.com/Numigi/odoo-survey-addons.git,addons,,
https://github.com/Numigi/odoo-timesheet-addons.git,addons,,
https://github.com/Numigi/odoo-web-addons.git,addons,,
https://github.com/OCA/account-analytic.git,addons,,
https://github.com/OCA/account-budgeting.git,addons,,
https://github.com/OCA/account-closing.git,addons,,
https://github.com/OCA/account-consolidation.git,addons,,
https://github.com/OCA/account-financial-reporting.git,addons,,
https://github.com/OCA/account-financial-tools.git,addons,,
https://github.com/OCA/account-fiscal-rule.git,addons,,
https://github.com/OCA/account-invoicing.git,addons,,
https://github.com/OCA/account-invoice-reporting.git,addons,,
https://github.com/OCA/account-payment.git,addons,,
https://github.com/OCA/account-reconcile.git,addons,,
https://github.com/OCA/apps-store.git,addons,,
https://github.com/OCA/bank-payment.git,addons,,
https://github.com/OCA/bank-statement-import.git,addons,,
https://github.com/OCA/brand.git,addons,,
https://github.com/OCA/business-requirement.git,addons,,
https://github.com/OCA/commission.git,addons,,
https://github.com/OCA/community-data-files.git,addons,,
https://github.com/OCA/connector-telephony.git,addons,,
https://github.com/OCA/contract.git,addons,,
https://github.com/OCA/credit-control.git,addons,,
https://github.com/OCA/currency.git,addons,,
https://github.com/OCA/data-protection.git,addons,,
https://github.com/OCA/donation.git,addons,,
https://github.com/OCA/e-commerce.git,addons,,
https://github.com/OCA/edi.git,addons,,
https://github.com/OCA/event.git,addons,,
https://github.com/OCA/helpdesk.git,addons,,
https://github.com/OCA/hr.git,addons,,
https://github.com/OCA/knowledge.git,addons,,
https://github.com/OCA/l10n-canada.git,addons,,
https://github.com/OCA/maintenance.git,addons,,
https://github.com/OCA/management-system.git,addons,,
https://github.com/OCA/manufacture.git,addons,,
https://github.com/OCA/margin-analysis.git,addons,,
https://github.com/OCA/mis-builder.git,addons,,
https://github.com/OCA/multi-company.git,addons,,
https://github.com/OCA/partner-contact.git,addons,,
https://github.com/OCA/pos.git,addons,,
https://github.com/OCA/product-attribute.git,addons,,
https://github.com/OCA/product-pack.git,addons,,
https://github.com/OCA/product-variant.git,addons,,
https://github.com/OCA/project.git,addons,,
https://github.com/OCA/project-reporting.git,addons,,
https://github.com/OCA/purchase-workflow.git,addons,,
https://github.com/OCA/queue.git,addons,,
https://github.com/OCA/reporting-engine.git,addons,,
https://github.com/OCA/sale-workflow.git,addons,,
https://github.com/OCA/server-auth.git,addons,,
https://github.com/OCA/server-brand.git,addons,,
https://github.com/OCA/server-env.git,addons,,
https://github.com/OCA/server-tools.git,addons,,
https://github.com/OCA/server-ux.git,addons,,
https://github.com/OCA/social.git,addons,,
https://github.com/OCA/stock-logistics-warehouse.git,addons,,
https://github.com/OCA/timesheet.git,addons,,
https://github.com/OCA/web.git,addons,,
https://github.com/OCA/website.git,addons,,
https://github.com/OCA/wms.git,addons,,
https://github.com/odoo/odoo.git,.,12.0_feature_5_star_CRM,1
https://github.com/odooaktiv/QuotationRevision.git,addons,,
https://github.com/openeducat/openeducat_erp.git,addons,,
https://github.com/SanteLibre/santelibre_addons.git,addons,master,
https://github.com/Smile-SA/odoo_addons.git,addons,,
1 url path revision clone-depth
2 https://github.com/ERPLibre/erplibre_addons.git addons
3 https://github.com/MathBenTech/development.git addons
4 https://github.com/MathBenTech/odoo-business-spending-management-quebec-canada.git addons stable_prod_12.0
5 https://github.com/MathBenTech/scrummer.git addons
6 https://github.com/muk-it/muk_base.git addons
7 https://github.com/muk-it/muk_dms.git addons
8 https://github.com/muk-it/muk_docs.git addons
9 https://github.com/muk-it/muk_misc.git addons
10 https://github.com/muk-it/muk_quality.git addons
11 https://github.com/muk-it/muk_web.git addons
12 https://github.com/muk-it/muk_website.git addons
13 https://github.com/Numigi/odoo-base-addons.git addons
14 https://github.com/Numigi/odoo-entertainment-addons.git addons
15 https://github.com/Numigi/odoo-git-addons.git addons
16 https://github.com/Numigi/odoo-hr-addons.git addons
17 https://github.com/Numigi/odoo-partner-addons.git addons
18 https://github.com/Numigi/odoo-product-addons.git addons
19 https://github.com/Numigi/odoo-project-addons.git addons
20 https://github.com/Numigi/odoo-purchase-addons.git addons
21 https://github.com/Numigi/odoo-stock-addons.git addons
22 https://github.com/Numigi/odoo-survey-addons.git addons
23 https://github.com/Numigi/odoo-timesheet-addons.git addons
24 https://github.com/Numigi/odoo-web-addons.git addons
25 https://github.com/OCA/account-analytic.git addons
26 https://github.com/OCA/account-budgeting.git addons
27 https://github.com/OCA/account-closing.git addons
28 https://github.com/OCA/account-consolidation.git addons
29 https://github.com/OCA/account-financial-reporting.git addons
30 https://github.com/OCA/account-financial-tools.git addons
31 https://github.com/OCA/account-fiscal-rule.git addons
32 https://github.com/OCA/account-invoicing.git addons
33 https://github.com/OCA/account-invoice-reporting.git addons
34 https://github.com/OCA/account-payment.git addons
35 https://github.com/OCA/account-reconcile.git addons
36 https://github.com/OCA/apps-store.git addons
37 https://github.com/OCA/bank-payment.git addons
38 https://github.com/OCA/bank-statement-import.git addons
39 https://github.com/OCA/brand.git addons
40 https://github.com/OCA/business-requirement.git addons
41 https://github.com/OCA/commission.git addons
42 https://github.com/OCA/community-data-files.git addons
43 https://github.com/OCA/connector-telephony.git addons
44 https://github.com/OCA/contract.git addons
45 https://github.com/OCA/credit-control.git addons
46 https://github.com/OCA/currency.git addons
47 https://github.com/OCA/data-protection.git addons
48 https://github.com/OCA/donation.git addons
49 https://github.com/OCA/e-commerce.git addons
50 https://github.com/OCA/edi.git addons
51 https://github.com/OCA/event.git addons
52 https://github.com/OCA/helpdesk.git addons
53 https://github.com/OCA/hr.git addons
54 https://github.com/OCA/knowledge.git addons
55 https://github.com/OCA/l10n-canada.git addons
56 https://github.com/OCA/maintenance.git addons
57 https://github.com/OCA/management-system.git addons
58 https://github.com/OCA/manufacture.git addons
59 https://github.com/OCA/margin-analysis.git addons
60 https://github.com/OCA/mis-builder.git addons
61 https://github.com/OCA/multi-company.git addons
62 https://github.com/OCA/partner-contact.git addons
63 https://github.com/OCA/pos.git addons
64 https://github.com/OCA/product-attribute.git addons
65 https://github.com/OCA/product-pack.git addons
66 https://github.com/OCA/product-variant.git addons
67 https://github.com/OCA/project.git addons
68 https://github.com/OCA/project-reporting.git addons
69 https://github.com/OCA/purchase-workflow.git addons
70 https://github.com/OCA/queue.git addons
71 https://github.com/OCA/reporting-engine.git addons
72 https://github.com/OCA/sale-workflow.git addons
73 https://github.com/OCA/server-auth.git addons
74 https://github.com/OCA/server-brand.git addons
75 https://github.com/OCA/server-env.git addons
76 https://github.com/OCA/server-tools.git addons
77 https://github.com/OCA/server-ux.git addons
78 https://github.com/OCA/social.git addons
79 https://github.com/OCA/stock-logistics-warehouse.git addons
80 https://github.com/OCA/timesheet.git addons
81 https://github.com/OCA/web.git addons
82 https://github.com/OCA/website.git addons
83 https://github.com/OCA/wms.git addons
84 https://github.com/odoo/odoo.git . 12.0_feature_5_star_CRM 1
85 https://github.com/odooaktiv/QuotationRevision.git addons
86 https://github.com/openeducat/openeducat_erp.git addons
87 https://github.com/SanteLibre/santelibre_addons.git addons master
88 https://github.com/Smile-SA/odoo_addons.git addons

View file

@ -1,88 +0,0 @@
url,path
https://github.com/ERPLibre/erplibre_addons.git,addons
https://github.com/MathBenTech/development.git,addons
https://github.com/MathBenTech/odoo-business-spending-management-quebec-canada.git,addons
https://github.com/MathBenTech/scrummer.git,addons
https://github.com/muk-it/muk_base.git,addons
https://github.com/muk-it/muk_dms.git,addons
https://github.com/muk-it/muk_docs.git,addons
https://github.com/muk-it/muk_misc.git,addons
https://github.com/muk-it/muk_quality.git,addons
https://github.com/muk-it/muk_web.git,addons
https://github.com/muk-it/muk_website.git,addons
https://github.com/Numigi/odoo-base-addons.git,addons
https://github.com/Numigi/odoo-entertainment-addons.git,addons
https://github.com/Numigi/odoo-git-addons.git,addons
https://github.com/Numigi/odoo-hr-addons.git,addons
https://github.com/Numigi/odoo-partner-addons.git,addons
https://github.com/Numigi/odoo-product-addons.git,addons
https://github.com/Numigi/odoo-project-addons.git,addons
https://github.com/Numigi/odoo-purchase-addons.git,addons
https://github.com/Numigi/odoo-stock-addons.git,addons
https://github.com/Numigi/odoo-survey-addons.git,addons
https://github.com/Numigi/odoo-timesheet-addons.git,addons
https://github.com/Numigi/odoo-web-addons.git,addons
https://github.com/OCA/account-analytic.git,addons
https://github.com/OCA/account-budgeting.git,addons
https://github.com/OCA/account-closing.git,addons
https://github.com/OCA/account-consolidation.git,addons
https://github.com/OCA/account-financial-reporting.git,addons
https://github.com/OCA/account-financial-tools,addons
https://github.com/OCA/account-fiscal-rule.git,addons
https://github.com/OCA/account-invoicing.git,addons
https://github.com/OCA/account-invoice-reporting.git,addons
https://github.com/OCA/account-payment.git,addons
https://github.com/OCA/account-reconcile.git,addons
https://github.com/OCA/apps-store.git,addons
https://github.com/OCA/bank-payment.git,addons
https://github.com/OCA/bank-statement-import.git,addons
https://github.com/OCA/brand.git,addons
https://github.com/OCA/business-requirement.git,addons
https://github.com/OCA/commission.git,addons
https://github.com/OCA/community-data-files.git,addons
https://github.com/OCA/connector-telephony.git,addons
https://github.com/OCA/contract.git,addons
https://github.com/OCA/credit-control.git,addons
https://github.com/OCA/currency.git,addons
https://github.com/OCA/data-protection.git,addons
https://github.com/OCA/donation.git,addons
https://github.com/OCA/e-commerce.git,addons
https://github.com/OCA/edi.git,addons
https://github.com/OCA/event.git,addons
https://github.com/OCA/helpdesk.git,addons
https://github.com/OCA/hr.git,addons
https://github.com/OCA/knowledge.git,addons
https://github.com/OCA/l10n-canada.git,addons
https://github.com/OCA/maintenance.git,addons
https://github.com/OCA/management-system.git,addons
https://github.com/OCA/manufacture.git,addons
https://github.com/OCA/margin-analysis.git,addons
https://github.com/OCA/mis-builder.git,addons
https://github.com/OCA/multi-company.git,addons
https://github.com/OCA/partner-contact.git,addons
https://github.com/OCA/pos.git,addons
https://github.com/OCA/product-attribute.git,addons
https://github.com/OCA/product-pack.git,addons
https://github.com/OCA/product-variant.git,addons
https://github.com/OCA/project.git,addons
https://github.com/OCA/project-reporting.git,addons
https://github.com/OCA/purchase-workflow.git,addons
https://github.com/OCA/queue.git,addons
https://github.com/OCA/reporting-engine.git,addons
https://github.com/OCA/sale-workflow.git,addons
https://github.com/OCA/server-auth.git,addons
https://github.com/OCA/server-brand.git,addons
https://github.com/OCA/server-env.git,addons
https://github.com/OCA/server-tools.git,addons
https://github.com/OCA/server-ux.git,addons
https://github.com/OCA/social.git,addons
https://github.com/OCA/stock-logistics-warehouse.git,addons
https://github.com/OCA/timesheet.git,addons
https://github.com/OCA/web.git,addons
https://github.com/OCA/website.git,addons
https://github.com/OCA/wms.git,addons
https://github.com/odoo/odoo.git,.
https://github.com/odooaktiv/QuotationRevision.git,addons
https://github.com/openeducat/openeducat_erp.git,addons
https://github.com/SanteLibre/santelibre_addons.git,addons
https://github.com/Smile-SA/odoo_addons.git,addons
1 url path
2 https://github.com/ERPLibre/erplibre_addons.git addons
3 https://github.com/MathBenTech/development.git addons
4 https://github.com/MathBenTech/odoo-business-spending-management-quebec-canada.git addons
5 https://github.com/MathBenTech/scrummer.git addons
6 https://github.com/muk-it/muk_base.git addons
7 https://github.com/muk-it/muk_dms.git addons
8 https://github.com/muk-it/muk_docs.git addons
9 https://github.com/muk-it/muk_misc.git addons
10 https://github.com/muk-it/muk_quality.git addons
11 https://github.com/muk-it/muk_web.git addons
12 https://github.com/muk-it/muk_website.git addons
13 https://github.com/Numigi/odoo-base-addons.git addons
14 https://github.com/Numigi/odoo-entertainment-addons.git addons
15 https://github.com/Numigi/odoo-git-addons.git addons
16 https://github.com/Numigi/odoo-hr-addons.git addons
17 https://github.com/Numigi/odoo-partner-addons.git addons
18 https://github.com/Numigi/odoo-product-addons.git addons
19 https://github.com/Numigi/odoo-project-addons.git addons
20 https://github.com/Numigi/odoo-purchase-addons.git addons
21 https://github.com/Numigi/odoo-stock-addons.git addons
22 https://github.com/Numigi/odoo-survey-addons.git addons
23 https://github.com/Numigi/odoo-timesheet-addons.git addons
24 https://github.com/Numigi/odoo-web-addons.git addons
25 https://github.com/OCA/account-analytic.git addons
26 https://github.com/OCA/account-budgeting.git addons
27 https://github.com/OCA/account-closing.git addons
28 https://github.com/OCA/account-consolidation.git addons
29 https://github.com/OCA/account-financial-reporting.git addons
30 https://github.com/OCA/account-financial-tools addons
31 https://github.com/OCA/account-fiscal-rule.git addons
32 https://github.com/OCA/account-invoicing.git addons
33 https://github.com/OCA/account-invoice-reporting.git addons
34 https://github.com/OCA/account-payment.git addons
35 https://github.com/OCA/account-reconcile.git addons
36 https://github.com/OCA/apps-store.git addons
37 https://github.com/OCA/bank-payment.git addons
38 https://github.com/OCA/bank-statement-import.git addons
39 https://github.com/OCA/brand.git addons
40 https://github.com/OCA/business-requirement.git addons
41 https://github.com/OCA/commission.git addons
42 https://github.com/OCA/community-data-files.git addons
43 https://github.com/OCA/connector-telephony.git addons
44 https://github.com/OCA/contract.git addons
45 https://github.com/OCA/credit-control.git addons
46 https://github.com/OCA/currency.git addons
47 https://github.com/OCA/data-protection.git addons
48 https://github.com/OCA/donation.git addons
49 https://github.com/OCA/e-commerce.git addons
50 https://github.com/OCA/edi.git addons
51 https://github.com/OCA/event.git addons
52 https://github.com/OCA/helpdesk.git addons
53 https://github.com/OCA/hr.git addons
54 https://github.com/OCA/knowledge.git addons
55 https://github.com/OCA/l10n-canada.git addons
56 https://github.com/OCA/maintenance.git addons
57 https://github.com/OCA/management-system.git addons
58 https://github.com/OCA/manufacture.git addons
59 https://github.com/OCA/margin-analysis.git addons
60 https://github.com/OCA/mis-builder.git addons
61 https://github.com/OCA/multi-company.git addons
62 https://github.com/OCA/partner-contact.git addons
63 https://github.com/OCA/pos.git addons
64 https://github.com/OCA/product-attribute.git addons
65 https://github.com/OCA/product-pack.git addons
66 https://github.com/OCA/product-variant.git addons
67 https://github.com/OCA/project.git addons
68 https://github.com/OCA/project-reporting.git addons
69 https://github.com/OCA/purchase-workflow.git addons
70 https://github.com/OCA/queue.git addons
71 https://github.com/OCA/reporting-engine.git addons
72 https://github.com/OCA/sale-workflow.git addons
73 https://github.com/OCA/server-auth.git addons
74 https://github.com/OCA/server-brand.git addons
75 https://github.com/OCA/server-env.git addons
76 https://github.com/OCA/server-tools.git addons
77 https://github.com/OCA/server-ux.git addons
78 https://github.com/OCA/social.git addons
79 https://github.com/OCA/stock-logistics-warehouse.git addons
80 https://github.com/OCA/timesheet.git addons
81 https://github.com/OCA/web.git addons
82 https://github.com/OCA/website.git addons
83 https://github.com/OCA/wms.git addons
84 https://github.com/odoo/odoo.git .
85 https://github.com/odooaktiv/QuotationRevision.git addons
86 https://github.com/openeducat/openeducat_erp.git addons
87 https://github.com/SanteLibre/santelibre_addons.git addons
88 https://github.com/Smile-SA/odoo_addons.git addons