erplibre/doc/GIT_REPO.md

2.7 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 repository under licence Apache-2.0.

Setup repo

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

prod

./venv/repo init -u http://git.erplibre.ca/ERPLibre -b master
./venv/repo sync

dev

./venv/repo init -u http://git.erplibre.ca/ERPLibre -b 12.0_repo -m ./manifest/default.dev.xml
./venv/repo sync

dev locally

Guide to setup locally git.

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

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

Create Manifest

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

Make a new version of prod

Freezes all repo, from dev to prod.

This will add revision git hash in the Manifest.

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

Do your commit.

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

Mix prod and dev to do a stage

When dev contain specific revision with default revision, you want to replace default revision by prod revision and keep specific version, do:

./script/git_merge_repo_manifest.py --input1 ./manifest/default.dev.xml --input2 ./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/repo init -u git://127.0.0.1:9418/ -b $(git rev-parse --abbrev-ref HEAD) -m ./manifest/default.staged.xml
./venv/repo sync -m ./manifest/default.staged.xml

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

Create a dev version

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

Do your commit.

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

Useful command

Search all repo with specific branch name

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

Search missing branch in all repo

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

Search change file in all repo

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

Clean all

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

./script/clean_repo_manifest.sh