comparison mercurial/commands.py @ 1014:e37cd99fa909

Clean up argument passing for dodiff
author mpm@selenic.com
date Tue, 23 Aug 2005 18:58:26 -0700
parents 1b6eb272b238
children 22571b8d35d3
comparison
equal deleted inserted replaced
1013:2e8b8da9a86e 1014:e37cd99fa909
138 if hasattr(pat, 'read') and 'r' in mode: 138 if hasattr(pat, 'read') and 'r' in mode:
139 return pat 139 return pat
140 return open(make_filename(repo, r, pat, node, total, seqno, revwidth), 140 return open(make_filename(repo, r, pat, node, total, seqno, revwidth),
141 mode) 141 mode)
142 142
143 def dodiff(fp, ui, repo, files=None, node1=None, node2=None, match=util.always, changes=None): 143 def dodiff(fp, ui, repo, node1, node2, files=None, match=util.always,
144 changes=None):
144 def date(c): 145 def date(c):
145 return time.asctime(time.gmtime(float(c[2].split(' ')[0]))) 146 return time.asctime(time.gmtime(float(c[2].split(' ')[0])))
146 147
147 if not changes: 148 if not changes:
148 (c, a, d, u) = repo.changes(node1, node2, files, match = match) 149 (c, a, d, u) = repo.changes(node1, node2, files, match = match)
645 """diff working directory (or selected files)""" 646 """diff working directory (or selected files)"""
646 revs = [] 647 revs = []
647 if opts['rev']: 648 if opts['rev']:
648 revs = map(lambda x: repo.lookup(x), opts['rev']) 649 revs = map(lambda x: repo.lookup(x), opts['rev'])
649 650
651 node1, node2 = None, None
652 if len(revs) > 0:
653 node1 = revs[0]
654 if len(revs) > 1:
655 node2 = revs[1]
650 if len(revs) > 2: 656 if len(revs) > 2:
651 raise util.Abort("too many revisions to diff") 657 raise util.Abort("too many revisions to diff")
652 658
653 files = [] 659 files = []
654 match = util.always 660 match = util.always
655 if pats: 661 if pats:
656 roots, match, results = makewalk(repo, pats, opts) 662 roots, match, results = makewalk(repo, pats, opts)
657 for src, abs, rel, exact in results: 663 for src, abs, rel, exact in results:
658 files.append(abs) 664 files.append(abs)
659 dodiff(sys.stdout, ui, repo, files, *revs, **{'match': match}) 665
666 dodiff(sys.stdout, ui, repo, node1, node2, files, match=match)
660 667
661 def doexport(ui, repo, changeset, seqno, total, revwidth, opts): 668 def doexport(ui, repo, changeset, seqno, total, revwidth, opts):
662 node = repo.lookup(changeset) 669 node = repo.lookup(changeset)
663 prev, other = repo.changelog.parents(node) 670 prev, other = repo.changelog.parents(node)
664 change = repo.changelog.read(node) 671 change = repo.changelog.read(node)
676 if other != hg.nullid: 683 if other != hg.nullid:
677 fp.write("# Parent %s\n" % hg.hex(other)) 684 fp.write("# Parent %s\n" % hg.hex(other))
678 fp.write(change[4].rstrip()) 685 fp.write(change[4].rstrip())
679 fp.write("\n\n") 686 fp.write("\n\n")
680 687
681 dodiff(fp, ui, repo, None, prev, node) 688 dodiff(fp, ui, repo, prev, node)
682 if fp != sys.stdout: fp.close() 689 if fp != sys.stdout: fp.close()
683 690
684 def export(ui, repo, *changesets, **opts): 691 def export(ui, repo, *changesets, **opts):
685 """dump the header and diffs for one or more changesets""" 692 """dump the header and diffs for one or more changesets"""
686 if not changesets: 693 if not changesets:
859 if filelog: 866 if filelog:
860 filenode = filelog.node(i) 867 filenode = filelog.node(i)
861 i = filelog.linkrev(filenode) 868 i = filelog.linkrev(filenode)
862 changenode = repo.changelog.node(i) 869 changenode = repo.changelog.node(i)
863 prev, other = repo.changelog.parents(changenode) 870 prev, other = repo.changelog.parents(changenode)
864 dodiff(sys.stdout, ui, repo, files, prev, changenode) 871 dodiff(sys.stdout, ui, repo, prev, changenode, files)
865 ui.write("\n\n") 872 ui.write("\n\n")
866 873
867 def manifest(ui, repo, rev=None): 874 def manifest(ui, repo, rev=None):
868 """output the latest or given revision of the project manifest""" 875 """output the latest or given revision of the project manifest"""
869 if rev: 876 if rev: