[ADD] script: tag push all
- git can push all tags with different organization from manifest - Add documentation git repo before clean all repo manifest
This commit is contained in:
parent
1bf8d7da9f
commit
b4ca616104
5 changed files with 96 additions and 1 deletions
7
Makefile
7
Makefile
|
|
@ -241,6 +241,13 @@ test_code_generator_code_i18n_extra:
|
|||
# To support i18n in auto_backup
|
||||
./script/code_generator/check_git_change_code_generator.sh ./addons/OCA_server-tools/auto_backup
|
||||
|
||||
##############
|
||||
# tag #
|
||||
##############
|
||||
.PHONY: tag_push_all
|
||||
tag_push_all:
|
||||
./script/tag_push_all.py
|
||||
|
||||
##############
|
||||
# terminal #
|
||||
##############
|
||||
|
|
|
|||
|
|
@ -66,6 +66,12 @@ Tools to display the differences between the repo and another project.
|
|||
./script/git_change_remote.py --sync_to /path/to/project/erplibre --dry_sync
|
||||
```
|
||||
|
||||
## Showing repo differences with manifest develop
|
||||
To understand the divergence with the dev manifest.
|
||||
```bash
|
||||
./script/git_show_code_diff_repo_manifest.py -m ./manifest/default.dev.xml
|
||||
```
|
||||
|
||||
## Sync repo with another project
|
||||
Tools to synchronise the repo with another project. This will show differences and try to checkout on the same commit in all repos.
|
||||
```bash
|
||||
|
|
|
|||
|
|
@ -82,6 +82,18 @@ git commit -am "[#ticket] subject: short sentence"
|
|||
```
|
||||
|
||||
### Clean all
|
||||
Before, check changed file in all repos.
|
||||
|
||||
```bash
|
||||
./.venv/repo forall -pc "git status -s"
|
||||
```
|
||||
|
||||
Check the changed branch, and push changed if needed.
|
||||
|
||||
```bash
|
||||
./script/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.
|
||||
```bash
|
||||
./script/clean_repo_manifest.sh
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ git tag v#.#.#
|
|||
git push --tags
|
||||
# Add tags for all repo
|
||||
./.venv/repo forall -pc "git tag ERPLibre/v#.#.#"
|
||||
./.venv/repo forall -pc "git push ERPLibre --tags"
|
||||
make tag_push_all
|
||||
```
|
||||
|
||||
## Generate and push docker
|
||||
|
|
|
|||
70
script/tag_push_all.py
Executable file
70
script/tag_push_all.py
Executable file
|
|
@ -0,0 +1,70 @@
|
|||
#!./.venv/bin/python
|
||||
import os
|
||||
import sys
|
||||
import argparse
|
||||
import logging
|
||||
from git import Repo # pip install gitpython
|
||||
from retrying import retry # pip install retrying
|
||||
from colorama import Fore
|
||||
from colorama import Style
|
||||
|
||||
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="""Push all addons git.""",
|
||||
epilog="""\
|
||||
""",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-m",
|
||||
"--manifest",
|
||||
default="./default.xml",
|
||||
help="The manifest to compare with actual code.",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
return args
|
||||
|
||||
|
||||
def main():
|
||||
config = get_config()
|
||||
git_tool = GitTool()
|
||||
|
||||
dct_remote, dct_project, default_remote = git_tool.get_manifest_xml_info(
|
||||
filename=config.manifest, add_root=True
|
||||
)
|
||||
i = 0
|
||||
total = len(dct_project)
|
||||
for name, project in dct_project.items():
|
||||
i += 1
|
||||
path = project.get("@path")
|
||||
print(f"{i}/{total} - {path}")
|
||||
organization = project.get("@remote", git_tool.default_project_name)
|
||||
|
||||
try:
|
||||
git_repo = Repo(path)
|
||||
retry(wait_exponential_multiplier=1000, stop_max_delay=15000)(
|
||||
git_repo.git.push
|
||||
)(organization, "--tags")
|
||||
except:
|
||||
print(
|
||||
f"{Fore.RED}ERROR{Style.RESET_ALL} cannot push --tags for path"
|
||||
f" {path} organization {organization}"
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Reference in a new issue