def run_main(argv): """Main program. Arguments: argv: command-line arguments, such as sys.argv (including the program name in argv[0]). Returns: 0 if there were no changes, non-zero otherwise. Raises: Exception: for all kinds of reasons... working it """ parser = argparse.ArgumentParser(description='Format and keep history.') parser.add_argument('--version', action='store_true', help='show version number and exit') parser.add_argument('-d', '--directory', action='store_true', help='repo directory ', dest='dir') args = parser.parse_args(argv[1:]) if args.version: print('gitreformat {}'.format(__version__)) return 0 if args.dir: os.chdir(os.path.expanduser(args.dir)) rewriter = GitHistoryRewriter() rewriter.run()
class TwistedMerge(object): def __init__(self): self.formatter = GitHistoryRewriter() self.repo = self.formatter.repo def remerge_twisted(self): start_topo = self.repo.heads.trunk.commit repo_topo = list(self.formatter.topo_sort({start_topo})) # get the merge strings refs = self.repo.remotes.origin.refs def merge_refs(): for c in repo_topo: if c.message.startswith('Merge '): firstline = c.message.split('\n', 1)[0] refstrs = firstline.split() refstr=refstrs[1].strip(':') if refstr in refs: print('+++++++ '+ firstline) yield c, refs[refstr].commit else: print('- - - ' + firstline) commit_start = repo_topo[0] head = self.repo.create_head('ghtdak_trunk') head.checkout() self.repo.active_branch.commit = commit_start for orig_merge, to_merge in merge_refs(): parent_commits = (commit_start, to_merge) commit_start = self.repo.index.commit( 'remerge: ' + orig_merge.message, parent_commits=parent_commits, author=orig_merge.author, author_date=time_convert(orig_merge.authored_date, orig_merge.author_tz_offset), committer=orig_merge.committer, commit_date=time_convert(orig_merge.committed_date, orig_merge.committer_tz_offset)) self.repo.active_branch.commit = commit_start
class TwistedMerge(object): def __init__(self): self.formatter = GitHistoryRewriter() self.repo = self.formatter.repo def remerge_twisted(self): start_topo = self.repo.heads.trunk.commit repo_topo = list(self.formatter.topo_sort({start_topo})) # get the merge strings refs = self.repo.remotes.origin.refs def merge_refs(): for c in repo_topo: if c.message.startswith('Merge '): firstline = c.message.split('\n', 1)[0] refstrs = firstline.split() refstr = refstrs[1].strip(':') if refstr in refs: print('+++++++ ' + firstline) yield c, refs[refstr].commit else: print('- - - ' + firstline) commit_start = repo_topo[0] head = self.repo.create_head('ghtdak_trunk') head.checkout() self.repo.active_branch.commit = commit_start for orig_merge, to_merge in merge_refs(): parent_commits = (commit_start, to_merge) commit_start = self.repo.index.commit( 'remerge: ' + orig_merge.message, parent_commits=parent_commits, author=orig_merge.author, author_date=time_convert(orig_merge.authored_date, orig_merge.author_tz_offset), committer=orig_merge.committer, commit_date=time_convert(orig_merge.committed_date, orig_merge.committer_tz_offset)) self.repo.active_branch.commit = commit_start
def __init__(self): self.formatter = GitHistoryRewriter() self.repo = self.formatter.repo