diff --git a/ros2_batch_job/__main__.py b/ros2_batch_job/__main__.py index 9be57ab90..f46b0a7eb 100644 --- a/ros2_batch_job/__main__.py +++ b/ros2_batch_job/__main__.py @@ -654,6 +654,11 @@ def run(args, build_function, blacklisted_package_names=None): info('Attempting to create a well known branch name for all the default branches') job.run(vcs_cmd + ['custom', '.', '--git', '--args', 'checkout', '-b', '__ci_default']) + # Check if the branch exists in at least one repo from the given repos file + for filename in repos_filenames: + branch_found = check_branch_exists(filename, args.test_branch) + if not branch_found: + print('Warning: None of the repos in ', filename, ' contain the branch ', args.test_branch) # Attempt to switch all the repositories to a given branch info("Attempting to switch all repositories to the '{0}' branch" .format(args.test_branch)) @@ -777,5 +782,24 @@ def _fetch_repos_file(url, filename, job): with open(filename, 'r') as f: print(f.read()) +# Checks if the given branch exists in at least one repo +def check_branch_exists(filename, branch): + # Populate all .git repos + lines = [] + with open(filename) as f: lines = f.readlines() + + urls = [] + for line in lines: + text = line.strip() + if text[-4:] == ".git": + urls.append(text.replace("url: ", "")) + + for repo in urls : + # Check if 'branch' exists in 'repo' + ret = os.system("git ls-remote --exit-code --heads " + repo + " " + branch) + if not ret : return True + + return False + if __name__ == '__main__': sys.exit(main())