forked from cerc-io/stack-orchestrator
Add capability to override the default branch in a repo
This commit is contained in:
parent
f71d7d52ec
commit
debbc5295b
@ -49,14 +49,23 @@ def is_git_repo(path):
|
|||||||
@click.command()
|
@click.command()
|
||||||
@click.option('--check-only', is_flag=True, default=False)
|
@click.option('--check-only', is_flag=True, default=False)
|
||||||
@click.option('--pull', is_flag=True, default=False)
|
@click.option('--pull', is_flag=True, default=False)
|
||||||
|
@click.option('--branches-file', help="checkout branches specified in this file")
|
||||||
@click.pass_context
|
@click.pass_context
|
||||||
def command(ctx, check_only, pull):
|
def command(ctx, check_only, pull, branches_file):
|
||||||
'''git clone the set of repositories required to build the complete system from source'''
|
'''git clone the set of repositories required to build the complete system from source'''
|
||||||
|
|
||||||
quiet = ctx.obj.quiet
|
quiet = ctx.obj.quiet
|
||||||
verbose = ctx.obj.verbose
|
verbose = ctx.obj.verbose
|
||||||
dry_run = ctx.obj.dry_run
|
dry_run = ctx.obj.dry_run
|
||||||
|
|
||||||
|
if branches_file:
|
||||||
|
if verbose:
|
||||||
|
print(f"loading branches from: {branches_file}")
|
||||||
|
with open(branches_file) as branches_file_open:
|
||||||
|
branches = branches_file_open.read().splitlines()
|
||||||
|
if verbose:
|
||||||
|
print(f"Branches are: {branches}")
|
||||||
|
|
||||||
dev_root_path = os.path.expanduser(config("DEV_ROOT", default="~/cerc"))
|
dev_root_path = os.path.expanduser(config("DEV_ROOT", default="~/cerc"))
|
||||||
|
|
||||||
if not quiet:
|
if not quiet:
|
||||||
@ -91,8 +100,8 @@ def command(ctx, check_only, pull):
|
|||||||
if verbose:
|
if verbose:
|
||||||
print(f'Running git pull for {full_filesystem_repo_path}')
|
print(f'Running git pull for {full_filesystem_repo_path}')
|
||||||
if not check_only:
|
if not check_only:
|
||||||
repo = git.Repo(full_filesystem_repo_path)
|
git_repo = git.Repo(full_filesystem_repo_path)
|
||||||
origin = repo.remotes.origin
|
origin = git_repo.remotes.origin
|
||||||
origin.pull(progress = None if quiet else GitProgress())
|
origin.pull(progress = None if quiet else GitProgress())
|
||||||
else:
|
else:
|
||||||
print("(git pull skipped)")
|
print("(git pull skipped)")
|
||||||
@ -105,6 +114,19 @@ def command(ctx, check_only, pull):
|
|||||||
progress = None if quiet else GitProgress())
|
progress = None if quiet else GitProgress())
|
||||||
else:
|
else:
|
||||||
print("(git clone skipped)")
|
print("(git clone skipped)")
|
||||||
|
# Checkout the requested branch, if one was specified
|
||||||
|
if branches:
|
||||||
|
# Find the current repo in the branches list
|
||||||
|
for repo_branch in branches:
|
||||||
|
repo_branch_tuple = repo_branch.split(" ")
|
||||||
|
if repo_branch_tuple[0] == repo:
|
||||||
|
# checkout specified branch
|
||||||
|
branch_to_checkout = repo_branch_tuple[1]
|
||||||
|
if verbose:
|
||||||
|
print(f"checking out branch {branch_to_checkout} in repo {repo}")
|
||||||
|
git_repo = git.Repo(full_filesystem_repo_path)
|
||||||
|
git_repo.git.checkout(branch_to_checkout)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for repo in repos:
|
for repo in repos:
|
||||||
|
Loading…
Reference in New Issue
Block a user