erplibre/doc/GIT_REPO.md
Mathieu Benoit de9779cfc2 [IMP] refactoring .venv.erplibre
- erplibre separate venv erplibre and odoo
- rename python-version to python-odoo-version
- add conf/python-erplibre-version
- rename .venv to .venv.erplibre
- move .venv/repo to .venv.erplibre/bin/repo
- install pyenv into .venv.erplibre
- install poetry into .venv.odooVERSION

- first installation show odoo version to install
- can install erplibre without odoo
- update README.md information about installation with TODO
- change image from github to locally
- remove link creation .venv

- update version: remove code to force create symbolic link .venv
- use dynamic merge manifest, will be able to merge different odoo
version
- can add dev tools
- default manifest is empty to remove conflict
2025-10-31 01:34:26 -04:00

3.2 KiB

git-repo

This is a guide to understand git-repo. Scripts in ERPLibre use git-repo automatically.

git-repo of Google is used to manage all git repositories under licence Apache-2.0.

Setup repo

curl https://storage.googleapis.com/git-repo-downloads/repo > .venv.erplibre/bin/repo

prod

.venv.erplibre/bin/repo init -u https://github.com/ERPLibre/ERPLibre -b master
.venv.erplibre/bin/repo sync -c -j $(nproc --all)

dev

.venv.erplibre/bin/repo init -u https://github.com/ERPLibre/ERPLibre -b 12.0_repo -m ./manifest/default.dev.xml
.venv.erplibre/bin/repo sync -c -j $(nproc --all)

local dev

Guide to setup locally git.

git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose &

.venv.erplibre/bin/repo init -u git://127.0.0.1:9418/ -b $(git rev-parse --abbrev-ref HEAD) -m ./manifest/default.dev.xml
.venv.erplibre/bin/repo sync -c -j $(nproc --all) -m ./manifest/default.dev.xml

Create Manifest

A Manifest, is an XML file managed by git-repo to generate a repo.

Make a new version of prod

It freezes all repo, from dev to prod.

This will add revision git hash in the manifest.

.venv.erplibre/bin/repo manifest -r -o ./default.xml

Commit.

git commit -am "[#ticket] subject: short sentence"

Mix prod and dev to create a stage version

When dev contains specific revision with default revision, you need to replace default revision with prod revision and keep specific version:

./script/git/git_merge_repo_manifest.py --input "./manifest/default.dev.xml;./default.xml" --output ./manifest/default.staged.xml
git commit -am "Updated manifest/default.staged.xml"

git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose &

.venv.erplibre/bin/repo init -u git://127.0.0.1:9418/ -b $(git rev-parse --abbrev-ref HEAD) -m ./manifest/default.staged.xml
.venv.erplibre/bin/repo sync -c -j $(nproc --all) -m ./manifest/default.staged.xml

.venv.erplibre/bin/repo manifest -r -o ./default.xml

Create a dev version

.venv.erplibre/bin/repo manifest -o ./manifest/default.dev.xml

Commit.

git commit -am "[#ticket] subject: short sentence"

Useful commands

Search all repos with a specific branch name

.venv.erplibre/bin/repo forall -pc "git branch -a|grep BRANCH"

Search missing branch in all repos

.venv.erplibre/bin/repo forall -pc 'git branch -a|(grep /BRANCH$||echo "no match")|grep "no match"'

Search changed file in all repos

.venv.erplibre/bin/repo forall -pc "git status -s"

Clean all

Before cleaning, check changed file in all repos.

.venv.erplibre/bin/repo forall -pc "git status -s"

Check the changed branch, and push changed if needed.

./script/git/git_show_code_diff_repo_manifest.py -m ./manifest/default.dev.xml

Maybe, some version diverge from your manifest. Simply clean all and relaunch your installation.

./script/git/clean_repo_manifest.sh