# git-repo Ce guide explique le fonctionnement de git-repo. Les scripts dans ERPLibre utilisent git-repo automatiquement. [git-repo de Google](https://code.google.com/archive/p/git-repo) est utilisé pour gérer tous les dépôts git sous licence [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.html). ## Configurer repo ```bash curl https://storage.googleapis.com/git-repo-downloads/repo > .venv.erplibre/bin/repo ``` ## prod ```bash .venv.erplibre/bin/repo init -u https://github.com/ERPLibre/ERPLibre -b master .venv.erplibre/bin/repo sync -c -j $(nproc --all) ``` ## dev ```bash .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) ``` ## dev local [Guide pour configurer git localement](https://railsware.com/blog/taming-the-git-daemon-to-quickly-share-git-repository/). ```bash 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 ``` # Créer un Manifest Un [Manifest](https://gerrit.googlesource.com/git-repo/+/master/docs/manifest-format.md) est un fichier XML géré par git-repo pour générer un dépôt. ## Créer une nouvelle version de prod Cela fige tous les dépôts, du dev vers la prod. Cela ajoutera le hash de révision git dans le manifest. ```bash .venv.erplibre/bin/repo manifest -r -o ./default.xml ``` Committez. ```bash git commit -am "[#ticket] subject: short sentence" ``` ### Mélanger prod et dev pour créer une version de staging Lorsque dev contient une révision spécifique avec la révision par défaut, vous devez remplacer la révision par défaut par la révision prod et garder la version spécifique : ```bash ./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 ``` ## Créer une version dev ```bash .venv.erplibre/bin/repo manifest -o ./manifest/default.dev.xml ``` Committez. ```bash git commit -am "[#ticket] subject: short sentence" ``` ## Commandes utiles ### Rechercher tous les dépôts avec un nom de branche spécifique ```bash .venv.erplibre/bin/repo forall -pc "git branch -a|grep BRANCH" ``` ### Rechercher les branches manquantes dans tous les dépôts ```bash .venv.erplibre/bin/repo forall -pc 'git branch -a|(grep /BRANCH$||echo "no match")|grep "no match"' ``` ### Rechercher les fichiers modifiés dans tous les dépôts ```bash .venv.erplibre/bin/repo forall -pc "git status -s" ``` ### Tout nettoyer Avant de nettoyer, vérifiez les fichiers modifiés dans tous les dépôts. ```bash .venv.erplibre/bin/repo forall -pc "git status -s" ``` Vérifiez les branches modifiées, et poussez les changements si nécessaire. ```bash ./script/git/git_show_code_diff_repo_manifest.py -m ./manifest/default.dev.xml ``` Peut-être que certaines versions divergent de votre manifest. Nettoyez simplement tout et relancez votre installation. ```bash ./script/git/clean_repo_manifest.sh ```