Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
assert branch_exists('release/fuerte/foo'), \
"no release/foo branch: " + str(get_branches())
assert branch_exists('patches/release/fuerte/foo'), \
"no patches/release/foo branch"
# was the release tag created?
ret, out, err = user('git tag', return_io=True)
assert out.count('release/fuerte/foo/0.1.0') == 1, \
"no release tag created"
###
### Release generator, again
###
# patch import should have reported OK
assert ret == code.OK, "actually returned ({0})".format(ret)
# do the proper branches exist?
assert branch_exists('release/fuerte/foo'), \
"no release/foo branch: " + str(get_branches())
assert branch_exists('patches/release/fuerte/foo'), \
"no patches/release/fuerte/foo branch"
# was the release tag created?
ret, out, err = user('git tag', return_io=True)
assert out.count('release/fuerte/foo/0.1.0') == 1, \
"no release tag created"
"Lost the debian overlaid files in upstream branch"
assert os.path.exists('white space.txt~'), \
"Lost file with whitespace in name in upstream branch"
with open('package.xml') as f:
package_xml = f.read()
assert package_xml.count(version), "not right file"
###
### Release generator
###
# patch import should have reported OK
assert ret == code.OK, "actually returned ({0})".format(ret)
# do the proper branches exist?
assert branch_exists('release/melodic/foo'), \
"no release/melodic/foo branch"
assert branch_exists('patches/release/melodic/foo'), \
"no patches/release/melodic/foo branch"
# was the release tag created?
ret, out, err = user('git tag', return_io=True)
expected = 'release/melodic/foo/' + version + '-1'
assert out.count(expected) == 1, \
"no release tag created, expected: '{0}'".format(expected)
###
### Make patch
###
with inbranch('release/melodic/foo'):
assert os.path.exists(os.path.join('debian', 'something.udev')), \
"Lost the debian overlaid files in release branch"
assert os.path.exists('white space.txt~'), \
"Lost file with whitespace in name in release branch"
assert os.path.islink('include/sym/foo.h'), "Symbolic link lost during pipeline"
def trim(sub_dir=None, force=False, undo=False, directory=None):
# Get the current branch
current_branch = get_current_branch(directory)
# Ensure the current branch is valid
if current_branch is None:
error("Could not determine current branch, are you in a git repo?",
exit=True)
# Construct the patches branch
patches_branch = 'patches/' + current_branch
try:
# See if the patches branch exists
if branch_exists(patches_branch, False, directory=directory):
if not branch_exists(patches_branch, True, directory=directory):
track_branches(patches_branch, directory)
else:
error("No patches branch (" + patches_branch + ") found, cannot "
"perform trim.", exit=True)
# Get the parent branch from the patches branch
config = get_patch_config(patches_branch, directory=directory)
if config is None:
error("Could not retrieve patches info.", exit=True)
# If sub_dir is set, try to set it
new_config = _set_trim_sub_dir(sub_dir, force, config, directory)
if new_config is None:
sys.exit('Could not perform trim')
# Perform trime or undo
if undo:
new_config = _undo(new_config, directory)
exit=True)
# Determine if the destination branch needs to be created
create_dst_branch = False
if branch_exists(dst, local_only=False, directory=directory):
if not branch_exists(dst, local_only=True, directory=directory):
debug("Tracking destination branch: {0}".format(dst))
track_branches(dst, directory)
else:
create_dst_branch = True
# Determine if the destination patches branch needs to be created
create_dst_patches_branch = False
dst_patches = 'patches/' + dst
if branch_exists(dst_patches, False, directory=directory):
if not branch_exists(dst_patches, True, directory=directory):
track_branches(dst_patches, directory)
else:
create_dst_patches_branch = True
# Summarize
if interactive:
info("Summary of changes:")
if create_dst_branch:
info(" " * 22 + "- The specified destination branch, " +
ansi('boldon') + dst + ansi('reset') +
", does not exist; it will be created from the source "
"branch " + ansi('boldon') + src + ansi('reset'))
if create_dst_patches_branch:
info(" " * 22 + "- The destination patches branch, " +
ansi('boldon') + dst_patches + ansi('reset') +
", does not exist; it will be created")
def remove_patches(directory=None):
# Get the current branch
current_branch = get_current_branch(directory)
if current_branch is None:
error("Could not determine current branch.", exit=True)
# Ensure the current branch is valid
if current_branch is None:
error("Could not determine current branch, are you in a git repo?",
exit=True)
# Construct the patches branch
patches_branch = 'patches/' + current_branch
try:
# See if the patches branch exists
if branch_exists(patches_branch, False, directory=directory):
if not branch_exists(patches_branch, True, directory=directory):
track_branches(patches_branch, directory)
else:
error("No patches branch (" + patches_branch + ") found, cannot "
"remove patches.", exit=True)
# Get the parent branch from the patches branch
config = get_patch_config(patches_branch, directory=directory)
parent, spec = config['parent'], config['base']
if None in [parent, spec]:
error("Could not retrieve patches info.", exit=True)
debug("Removing patches from " + current_branch + " back to base "
"commit " + spec)
# Reset this branch using git revert --no-edit spec
current_commit = get_commit_hash(current_branch, directory)
command_spec = spec + '..' + current_commit
execute_command(
'git revert --no-edit -Xtheirs ' + command_spec, cwd=directory
def remove_patches(directory=None):
# Get the current branch
current_branch = get_current_branch(directory)
if current_branch is None:
error("Could not determine current branch.", exit=True)
# Ensure the current branch is valid
if current_branch is None:
error("Could not determine current branch, are you in a git repo?",
exit=True)
# Construct the patches branch
patches_branch = 'patches/' + current_branch
try:
# See if the patches branch exists
if branch_exists(patches_branch, False, directory=directory):
if not branch_exists(patches_branch, True, directory=directory):
track_branches(patches_branch, directory)
else:
error("No patches branch (" + patches_branch + ") found, cannot "
"remove patches.", exit=True)
# Get the parent branch from the patches branch
config = get_patch_config(patches_branch, directory=directory)
parent, spec = config['parent'], config['base']
if None in [parent, spec]:
error("Could not retrieve patches info.", exit=True)
debug("Removing patches from " + current_branch + " back to base "
"commit " + spec)
# Reset this branch using git revert --no-edit spec
current_commit = get_commit_hash(current_branch, directory)
command_spec = spec + '..' + current_commit
execute_command(
configs = os.path.join(tmp_dir, 'configs')
my_copytree(git_root, configs, ignores)
if [x for x in os.listdir(os.getcwd()) if x not in ignores]:
execute_command('git rm -rf ./*')
with open(PLACEHOLDER_FILE, 'w') as f:
f.write("""\
This branch ('bloom') has been deprecated in favor of storing settings and overlay files in the master branch.
Please goto the master branch for anything which referenced the bloom branch.
You can delete this branch at your convenience.
""")
execute_command('git add ' + PLACEHOLDER_FILE)
if has_changes():
execute_command('git commit -m "DEPRECATING BRANCH"')
if not branch_exists(BLOOM_CONFIG_BRANCH):
info("Creating '{0}' branch.".format(BLOOM_CONFIG_BRANCH))
create_branch(BLOOM_CONFIG_BRANCH, orphaned=True)
with inbranch(BLOOM_CONFIG_BRANCH):
my_copytree(configs, git_root)
execute_command('git add ./*')
if has_changes():
execute_command('git commit -m '
'"Moving configs from bloom branch"')
finally:
# Clean up
if os.path.exists(tmp_dir):
shutil.rmtree(tmp_dir)
def import_patches(directory=None):
# Get current branch
current_branch = get_current_branch(directory)
if current_branch is None:
error("Could not determine current branch.", exit=True)
# Construct the patches branch name
patches_branch = 'patches/' + current_branch
# Ensure the patches branch exists and is tracked
if branch_exists(patches_branch, False, directory=directory):
if not branch_exists(patches_branch, True, directory=directory):
track_branches(patches_branch, directory)
else:
error("The patches branch ({0}) does not ".format(patches_branch) +
"exist, did you use git-bloom-branch?", exit=True)
# Create a swap space
tmp_dir = tempfile.mkdtemp()
try:
# Get parent branch and base commit from patches branch
config = get_patch_config(patches_branch, directory)
parent_branch, commit = config['parent'], config['base']
if commit != get_commit_hash(current_branch, directory):
debug(
"commit != get_commit_hash(current_branch, directory)"
)
debug(
warning("Removing tag: '{0}'".format(upstream_tag))
delete_tag(upstream_tag)
if not get_git_clone_state():
delete_remote_tag(upstream_tag)
name_tag = '{0}/{1}'.format(name or 'upstream', version)
if name_tag != upstream_tag and tag_exists(name_tag):
if not replace:
error("Tag '{0}' already exists, use --replace to override it."
.format(name_tag), exit=True)
warning("Removing tag: '{0}'".format(name_tag))
delete_tag(name_tag)
if not get_git_clone_state():
delete_remote_tag(name_tag)
# If there is not upstream branch, create one
if not branch_exists('upstream'):
info("Creating upstream branch.")
create_branch('upstream', orphaned=True)
else:
track_branches(['upstream'])
# Import the given tarball
info("Importing archive into upstream branch...")
import_tarball(tarball_path, 'upstream', version, name)
# Handle patches_path
if patches_path:
import_patches(patches_path, patches_path_dict, 'upstream', version)
# Create tags
with inbranch('upstream'):
# Assert packages in upstream are the correct version