Odoo18-Base/setup/merge_module.py

45 lines
1.5 KiB
Python
Raw Permalink Normal View History

2025-03-08 10:05:07 +07:00
import subprocess
import yaml
import os
import argparse
# Set up argument parsing
parser = argparse.ArgumentParser(
description="Checkout modules from target branch that are not in source branch."
)
parser.add_argument("yaml_file", help="Path to the YAML file")
parser.add_argument("source_branch", help="The source branch")
parser.add_argument("target_branch", help="The target branch")
parser.add_argument("root_repo", help="Path to the root repository")
# Parse the arguments
args = parser.parse_args()
yaml_file = args.yaml_file
source_branch = args.source_branch
target_branch = args.target_branch
root_repo = args.root_repo
# Change to the repository directory
os.chdir(root_repo)
# Read YAML file
with open(yaml_file, "r") as file:
data = yaml.safe_load(file)
# Extract module lists for source and target branches
modules_source = data["branches"].get(source_branch, {}).get("modules", [])
modules_target = data["branches"].get(target_branch, {}).get("modules", [])
# Ensure the latest changes are fetched
subprocess.run(["git", "fetch", "origin"], check=True)
# Checkout source branch first
print(f"Checking out source branch: {source_branch}")
subprocess.run(["git", "checkout", source_branch], check=True)
# Checkout modules in target_branch that are not in source_branch
for module in modules_target:
if module not in modules_source:
print(f"Checking out module: {module}")
subprocess.run(["git", "checkout", target_branch, "--", module], check=True)