Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
.format(destination))
# Then this is a debian branch
# Place the raw template files
self.place_template_files(package.get_build_type())
else:
# This is a distro specific debian branch
# Determine the current package being generated
distro = destination.split('/')[-2]
# Create debians for each distro
with inbranch(destination):
data = self.generate_debian(package, distro)
# Create the tag name for later
self.tag_names[destination] = self.generate_tag_name(data)
# Update the patch configs
patches_branch = 'patches/' + destination
config = get_patch_config(patches_branch)
# Store it
self.store_original_config(config, patches_branch)
# Modify the base so import/export patch works
current_branch = get_current_branch()
if current_branch is None:
error("Could not determine current branch.", exit=True)
config['base'] = get_commit_hash(current_branch)
# Set it
set_patch_config(patches_branch, config)
# 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)
if new_config is None:
return -1 # Indicates that nothing was done
else:
new_config = _trim(new_config, force, directory)
if new_config is None:
sys.exit('Could not perform trim')
# Commit the new config
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(
"{0} != get_commit_hash({1}, {2}) != {3}".format(
commit, current_branch, directory,
get_commit_hash(current_branch, directory)
)
)
os.system('git log')
warning(
"The current commit is not the same as the most recent "
"rebase commit."
)
def pre_rebase(self, destination):
# Get the stored configs is any
patches_branch = 'patches/' + destination
config = self.load_original_config(patches_branch)
if config is not None:
curr_config = get_patch_config(patches_branch)
if curr_config['parent'] == config['parent']:
set_patch_config(patches_branch, config)
def export_patches(directory=None):
# Ensure a clean/valid working environment
ensure_clean_working_env(git_status=True, directory=directory)
# 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
if not branch_exists(patches_branch, False, directory=directory):
error("The patches branch ({0}) does not ".format(patches_branch) +
"exist, did you use git-bloom-branch?", exit=True)
try:
# Get parent branch and base commit from patches branch
config = get_patch_config(patches_branch, directory)
if config is None:
error("Failed to get patches information.", exit=True)
# Checkout to the patches branch
checkout(patches_branch, directory=directory)
# Notify the user
debug("Exporting patches from "
"{0}...{1}".format(config['base'], current_branch))
# Remove all the old patches
if len(list_patches(directory)) > 0:
cmd = 'git rm ./*.patch'
execute_command(cmd, cwd=directory)
# Create the patches using git format-patch
cmd = "git format-patch -M -B " \
"{0}...{1}".format(config['base'], current_branch)
execute_command(cmd, cwd=directory)
# Report of the number of patches created
if create_dst_patches_branch:
create_branch(dst_patches, orphaned=True, directory=directory)
# Create the starting config data if it does not exist
patches_ls = ls_tree(dst_patches, directory=directory)
if 'patches.conf' not in patches_ls:
# Patches config not setup, set it up
config = {
'parent': src,
'previous': '',
'base': get_commit_hash(dst, directory=directory),
'trim': '',
'trimbase': ''
}
set_patch_config(dst_patches, config, directory=directory)
else:
config = get_patch_config(dst_patches, directory=directory)
if config['parent'] != src:
warning("Updated parent to '{0}' from '{1}'"
.format(src, config['parent']))
config['parent'] = src
config['base'] = get_commit_hash(dst, directory=directory)
set_patch_config(dst_patches, config, directory=directory)
# Command successful, do not switch back to previous branch
current_branch = None
finally:
if current_branch is not None:
checkout(current_branch, directory=directory)
def rebase_patches(without_git_rebase=True, directory=None):
# Ensure a clean/valid working environment
ensure_clean_working_env(git_status=True, directory=directory)
# Make sure we need to actually call this
# Get the current branch
current_branch = get_current_branch(directory)
if current_branch is None:
error("Could not determine current branch.", exit=True)
# Get the patches branch
patches_branch = 'patches/' + current_branch
# Get the current patches.conf
config = get_patch_config(patches_branch, directory=directory)
# Execute the rebase
if without_git_rebase:
non_git_rebase(config['parent'], directory=directory)
else:
git_rebase(config['parent'], directory=directory)
# Update the patches information
# Get the latest configs
config = get_patch_config(patches_branch, directory)
# Set the base to the current hash (before patches)
current_branch_ = get_current_branch(directory)
debug('Current branch: ' + current_branch_ or 'could not determine branch')
config['base'] = get_commit_hash(current_branch_, directory)
debug('New current commit hash after rebase: ' + config['base'])
# Set the new upstream hash to the previous upstream hash
def pre_rebase(self, destination):
# Get the stored configs is any
patches_branch = 'patches/' + destination
config = self.load_original_config(patches_branch)
if config is not None:
curr_config = get_patch_config(patches_branch)
if curr_config['parent'] == config['parent']:
set_patch_config(patches_branch, config)