545 if switch_parent: |
545 if switch_parent: |
546 parents.reverse() |
546 parents.reverse() |
547 prev = (parents and parents[0]) or nullid |
547 prev = (parents and parents[0]) or nullid |
548 |
548 |
549 shouldclose = False |
549 shouldclose = False |
550 if not fp: |
550 if not fp and len(template) > 0: |
551 desc_lines = ctx.description().rstrip().split('\n') |
551 desc_lines = ctx.description().rstrip().split('\n') |
552 desc = desc_lines[0] #Commit always has a first line. |
552 desc = desc_lines[0] #Commit always has a first line. |
553 fp = makefileobj(repo, template, node, desc=desc, total=total, |
553 fp = makefileobj(repo, template, node, desc=desc, total=total, |
554 seqno=seqno, revwidth=revwidth, mode='ab') |
554 seqno=seqno, revwidth=revwidth, mode='ab') |
555 if fp != template: |
555 if fp != template: |
556 shouldclose = True |
556 shouldclose = True |
557 if fp != sys.stdout and util.safehasattr(fp, 'name'): |
557 if fp and fp != sys.stdout and util.safehasattr(fp, 'name'): |
558 repo.ui.note("%s\n" % fp.name) |
558 repo.ui.note("%s\n" % fp.name) |
559 |
559 |
560 fp.write("# HG changeset patch\n") |
560 if not fp: |
561 fp.write("# User %s\n" % ctx.user()) |
561 write = repo.ui.write |
562 fp.write("# Date %d %d\n" % ctx.date()) |
562 else: |
|
563 def write(s, **kw): |
|
564 fp.write(s) |
|
565 |
|
566 |
|
567 write("# HG changeset patch\n") |
|
568 write("# User %s\n" % ctx.user()) |
|
569 write("# Date %d %d\n" % ctx.date()) |
563 if branch and branch != 'default': |
570 if branch and branch != 'default': |
564 fp.write("# Branch %s\n" % branch) |
571 write("# Branch %s\n" % branch) |
565 fp.write("# Node ID %s\n" % hex(node)) |
572 write("# Node ID %s\n" % hex(node)) |
566 fp.write("# Parent %s\n" % hex(prev)) |
573 write("# Parent %s\n" % hex(prev)) |
567 if len(parents) > 1: |
574 if len(parents) > 1: |
568 fp.write("# Parent %s\n" % hex(parents[1])) |
575 write("# Parent %s\n" % hex(parents[1])) |
569 fp.write(ctx.description().rstrip()) |
576 write(ctx.description().rstrip()) |
570 fp.write("\n\n") |
577 write("\n\n") |
571 |
578 |
572 for chunk in patch.diff(repo, prev, node, opts=opts): |
579 for chunk, label in patch.diffui(repo, prev, node, opts=opts): |
573 fp.write(chunk) |
580 write(chunk, label=label) |
574 |
581 |
575 if shouldclose: |
582 if shouldclose: |
576 fp.close() |
583 fp.close() |
577 |
584 |
578 for seqno, rev in enumerate(revs): |
585 for seqno, rev in enumerate(revs): |