def main(): parser = make_parser() args = parser.parse_args() check_area_archivable(args.area) env.check_epics_version(args.epics_version) pathf.check_technical_area(args.area, args.module_name) # Check for the existence of release of this module/IOC w_dir = os.path.join(env.prodArea(args.area), args.module_name) release_dir = os.path.join(w_dir, args.release) archive = release_dir + ".tar.gz" check_file_paths(release_dir, archive, args.untar) # Create build object for release build = dlsbuild.ArchiveBuild(args.untar) if args.epics_version: build.set_epics(args.epics_version) build.set_area(args.area) git = vcs_git.Git(args.module_name, args, mock_repo=release_dir) git.set_version(args.release) build.submit(git)
def main(): parser = make_parser() args = parser.parse_args() pathf.check_technical_area(args.area, args.module_name) module = args.module_name source = pathf.dev_module_path(module, args.area) logging.debug(source) if vcs_git.is_server_repo(source): repo = vcs_git.temp_clone(source) releases = vcs_git.list_module_releases(repo) if releases: last_release_num = releases[-1] else: print("No release has been done for " + module) # return so last_release_num can't be referenced before assignment return 1 else: raise Exception(source + " does not exist on the repository.") # Get a single log between last release and HEAD # If there is one, then changes have been made logs = list(repo.iter_commits(last_release_num + "..HEAD", max_count=1)) if logs: print("Changes have been made to " + module + " since release " + last_release_num) else: print("No changes have been made to " + module + " since most recent release " + last_release_num) shutil.rmtree(repo.working_tree_dir)
def test_given_area_ioc_module_split_less_than_two_then_no_error_raised(self): area = "ioc" module = "test_module" expected_error_msg = "Missing technical area under beamline" try: path_functions.check_technical_area(area, module) except ParsingError as error: self.assertEqual(str(error), expected_error_msg)
def main(): parser = make_parser() args = parser.parse_args() env.check_epics_version(args.epics_version) pathf.check_technical_area(args.area, args.module_name) # Force check of repo, not file system, for tools, etc and epics (previous releases are only stored on repo) if args.area in ["etc", "tools", "epics"]: args.git = True # Check for the existence of releases of this module/IOC releases = [] if args.git: # List branches of repository target = "the repository" source = pathf.dev_module_path(args.module_name, args.area) repo = vcs_git.temp_clone(source) releases = vcs_git.list_module_releases(repo) shutil.rmtree(repo.working_tree_dir) else: # List branches from prod target = "prod" source = env.prodArea(args.area) if args.area == 'python' and args.rhel_version >= 6: source = os.path.join(source, "RHEL{0}-{1}".format(args.rhel_version, platform.machine())) logging.debug(source) release_dir = os.path.join(source, args.module_name) if os.path.isdir(release_dir): for p in os.listdir(release_dir): if os.path.isdir(os.path.join(release_dir, p)): releases.append(p) # Check some releases have been made if len(releases) == 0: if args.git: print(args.module_name + ": No releases made in git") else: print(args.module_name + ": No releases made for " + args.epics_version) return 1 releases = env.sortReleases(releases) if args.latest: print("The latest release for " + args.module_name + " in " + target + " is: " + releases[-1]) else: print("Previous releases for " + args.module_name + " in " + target + ":") for release in releases: print(release)
def main(): parser = make_parser() args = parser.parse_args() pathf.check_technical_area(args.area, args.module_name) source = pathf.dev_module_path(args.module_name, args.area) print("Branches of " + args.module_name + ":\n") repo = vcs_git.temp_clone(source) branches = vcs_git.list_remote_branches(repo) for branch in branches: print(branch) print("") shutil.rmtree(repo.working_tree_dir)
def test_given_area_ioc_module_split_two_then_no_error_raised(self): area = "ioc" module = "modules/test_module" path_functions.check_technical_area(area, module)
def test_given_area_not_ioc_then_no_error_raised(self): area = "support" module = "test_module" path_functions.check_technical_area(area, module)
def main(): parser = make_parser() args = parser.parse_args() raw = set_raw_argument(args.raw) pathf.check_technical_area(args.area, args.module_name) check_parsed_args_compatible(args.releases, args.earlier_release, args.later_release, parser) check_releases_valid(args.releases, parser) source = pathf.dev_module_path(args.module_name, args.area) if vcs_git.is_server_repo(source): repo = vcs_git.temp_clone(source) releases = vcs_git.list_module_releases(repo) logging.debug(releases) else: raise Exception("Module " + args.module_name + " doesn't exist in " + source) # Set start and end releases and check they exist, set to defaults if not given start, end = set_log_range(args.module_name, args.releases, args.earlier_release, args.later_release, releases) # Create log info from log messages # log_info is a dictionary in the form {logs(list), commit_objects(dict), max_author_length(int)} log_info = get_log_messages(repo) if len(releases) > 0: if start == "": tag_start = releases[0] else: tag_start = start # Append tag info to log info from tag messages tags = get_tags_list(repo, tag_start, end, releases[-1]) log_info = get_tag_messages(tags, log_info) # Check if there are any logs, exit if not if not log_info['logs']: print("No logs for " + args.module_name + " between releases " + args.earlier_release + " and " + args.later_release) return 0 # Sort tags and commits chronologically by the UNIX time stamp in index 0 log_info['logs'] = sorted(log_info['logs'], key=itemgetter(0)) # Make list of printable log entries formatted_logs = format_log_messages(log_info, raw, args.verbose) if end == 'HEAD': print_bool = True else: print_bool = False release_marker = "(RELEASE: {})" for log in formatted_logs: if log.endswith(release_marker.format(end)): print_bool = True if print_bool: print(log) if log.endswith(release_marker.format(start)): break shutil.rmtree(repo.working_tree_dir)