Mercurial > public > mercurial-scm > hg-stable
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) |