Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def check_for_multiple_remotes():
if get_root() is None:
return
remotes = get_remotes()
if len(remotes) < 0:
error("Current git repository has no remotes. "
"If you are running bloom-release, please change directories.",
exit=True)
if len(remotes) > 1:
error("Current git repository has multiple remotes. "
"If you are running bloom-release, please change directories.",
exit=True)
debug("_set_trim_sub_dir(" + str(sub_dir) + ", " + str(force) + ", " +
str(config) + ", " + str(directory) + ")")
if sub_dir is not None:
if config['trim'] != '' and config['trim'] != sub_dir:
warning("You are trying to set the trim sub directory to " +
sub_dir + ", but it is already set to " +
config['trim'] + ".")
if not force:
warning("Changing the sud directory is not advised. "
"If you are sure you want to do this, use "
"'--force'")
return None
else:
warning("Forcing the change of the sub directory.")
# Make the sub_dir absolute
git_root = get_root(directory)
sub_dir_abs = os.path.join(git_root, sub_dir)
# Make sure it is a directory
if not os.path.isdir(sub_dir_abs):
error("The given sub directory, (" + sub_dir + ") does not "
"exist in the git repository at " + git_root)
return None
# Set the trim sub directory
config['trim'] = sub_dir
return config
def get_upstream_meta(upstream_dir, ros_distro):
meta = None
directory = os.getcwd()
with change_directory(upstream_dir):
if get_root() is not None: # If in a git repo
current_branch = get_current_branch()
else:
current_branch = None
name, version, packages = get_package_data(current_branch, quiet=False, release_directory=directory)
meta = {
'name': name,
'version': version,
'type': 'package.xml'
}
return meta
if get_root() is None:
# Not a git repository
return
track_branches(['bloom', BLOOM_CONFIG_BRANCH])
if show('bloom', PLACEHOLDER_FILE) is not None:
return
if show('bloom', 'bloom.conf') is not None:
# Wait for the bloom.conf upconvert...
return
if not branch_exists('bloom'):
return
_has_checked_bloom_branch = True
info("Moving configurations from deprecated 'bloom' branch "
"to the '{0}' branch.".format(BLOOM_CONFIG_BRANCH))
tmp_dir = mkdtemp()
git_root = get_root()
try:
# Copy the new upstream source into the temporary directory
with inbranch('bloom'):
ignores = ('.git', '.gitignore', '.svn', '.hgignore', '.hg', 'CVS')
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.
""")
def upconvert_bloom_to_config_branch():
global _has_checked_bloom_branch
if _has_checked_bloom_branch:
return
# Assert that this repository does not have multiple remotes
check_for_multiple_remotes()
if get_root() is None:
# Not a git repository
return
track_branches(['bloom', BLOOM_CONFIG_BRANCH])
if show('bloom', PLACEHOLDER_FILE) is not None:
return
if show('bloom', 'bloom.conf') is not None:
# Wait for the bloom.conf upconvert...
return
if not branch_exists('bloom'):
return
_has_checked_bloom_branch = True
info("Moving configurations from deprecated 'bloom' branch "
"to the '{0}' branch.".format(BLOOM_CONFIG_BRANCH))
tmp_dir = mkdtemp()
git_root = get_root()
try:
def non_git_rebase(upstream_branch, directory=None):
# Create a temporary storage directory
tmp_dir = mkdtemp()
# Get the root of the git repository
git_root = get_root(directory)
try:
# Copy the new upstream source into the temporary directory
with inbranch(upstream_branch):
ignores = ('.git', '.gitignore', '.svn', '.hgignore', '.hg', 'CVS')
parent_source = os.path.join(tmp_dir, 'parent_source')
my_copytree(git_root, parent_source, ignores)
# Clear out any untracked files
execute_command('git clean -fdx', cwd=directory) # for good measure?
# Collect files (excluding .git)
items = []
for item in os.listdir(git_root):
if item in ['.git', '..', '.']:
continue
items.append(item)
# Remove all files
if len(items) > 0:
if config['trimbase'] != '':
warning("It looks like the trim operation has already been done, "
"nested trimming is not supported.")
if force:
warning("Proceeding anyways because of '--force'")
else:
warning("If you would like to continue anyways use '--force'")
return None
current_branch = get_current_branch(directory)
if current_branch is None:
error("Could not determine current branch.", exit=True)
config['trimbase'] = get_commit_hash(current_branch)
tmp_dir = tempfile.mkdtemp()
try:
# Buckup trim sub directory
git_root = get_root()
sub_dir = os.path.join(git_root, config['trim'])
storage = os.path.join(tmp_dir, config['trim'])
shutil.copytree(sub_dir, storage)
# Clear out any untracked files
execute_command('git clean -fdx', cwd=directory)
# Collect al files (excluding .git)
items = []
for item in os.listdir(git_root):
if item in ['.git', '..', '.']:
continue
items.append(item)
# Remove and .* files missed by 'git rm -rf *'
if len(items) > 0:
execute_command('git rm -rf ' + ' '.join(["'{}'".format(i) for i in items if i]), cwd=directory)
# Copy the sub directory back
for item in os.listdir(storage):