comparison mercurial/patch.py @ 3970:fff8a5345eb0

commands.py: use contexts in export
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Tue, 26 Dec 2006 03:12:23 +0100
parents dccb83241dd0
children c190df14338c
comparison
equal deleted inserted replaced
3969:edaf68032a27 3970:fff8a5345eb0
591 '''export changesets as hg patches.''' 591 '''export changesets as hg patches.'''
592 592
593 total = len(revs) 593 total = len(revs)
594 revwidth = max([len(str(rev)) for rev in revs]) 594 revwidth = max([len(str(rev)) for rev in revs])
595 595
596 def single(node, seqno, fp): 596 def single(rev, seqno, fp):
597 parents = [p for p in repo.changelog.parents(node) if p != nullid] 597 ctx = repo.changectx(rev)
598 node = ctx.node()
599 parents = [p.node() for p in ctx.parents() if p]
598 if switch_parent: 600 if switch_parent:
599 parents.reverse() 601 parents.reverse()
600 prev = (parents and parents[0]) or nullid 602 prev = (parents and parents[0]) or nullid
601 change = repo.changelog.read(node)
602 603
603 if not fp: 604 if not fp:
604 fp = cmdutil.make_file(repo, template, node, total=total, 605 fp = cmdutil.make_file(repo, template, node, total=total,
605 seqno=seqno, revwidth=revwidth) 606 seqno=seqno, revwidth=revwidth)
606 if fp not in (sys.stdout, repo.ui): 607 if fp not in (sys.stdout, repo.ui):
607 repo.ui.note("%s\n" % fp.name) 608 repo.ui.note("%s\n" % fp.name)
608 609
609 fp.write("# HG changeset patch\n") 610 fp.write("# HG changeset patch\n")
610 fp.write("# User %s\n" % change[1]) 611 fp.write("# User %s\n" % ctx.user())
611 fp.write("# Date %d %d\n" % change[2]) 612 fp.write("# Date %d %d\n" % ctx.date())
612 fp.write("# Node ID %s\n" % hex(node)) 613 fp.write("# Node ID %s\n" % hex(node))
613 fp.write("# Parent %s\n" % hex(prev)) 614 fp.write("# Parent %s\n" % hex(prev))
614 if len(parents) > 1: 615 if len(parents) > 1:
615 fp.write("# Parent %s\n" % hex(parents[1])) 616 fp.write("# Parent %s\n" % hex(parents[1]))
616 fp.write(change[4].rstrip()) 617 fp.write(ctx.description().rstrip())
617 fp.write("\n\n") 618 fp.write("\n\n")
618 619
619 diff(repo, prev, node, fp=fp, opts=opts) 620 diff(repo, prev, node, fp=fp, opts=opts)
620 if fp not in (sys.stdout, repo.ui): 621 if fp not in (sys.stdout, repo.ui):
621 fp.close() 622 fp.close()
622 623
623 for seqno, rev in enumerate(revs): 624 for seqno, rev in enumerate(revs):
624 single(repo.lookup(rev), seqno+1, fp) 625 single(rev, seqno+1, fp)
625 626
626 def diffstat(patchlines): 627 def diffstat(patchlines):
627 fd, name = tempfile.mkstemp(prefix="hg-patchbomb-", suffix=".txt") 628 fd, name = tempfile.mkstemp(prefix="hg-patchbomb-", suffix=".txt")
628 try: 629 try:
629 p = popen2.Popen3('diffstat -p1 -w79 2>/dev/null > ' + name) 630 p = popen2.Popen3('diffstat -p1 -w79 2>/dev/null > ' + name)