Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/commands.py @ 729:626aa658e2a9
Turn make_filename into make_file, which returns a file handle.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Wed, 20 Jul 2005 02:48:16 -0800 |
parents | acee766fcb79 |
children | 91ca3afab8e8 |
comparison
equal
deleted
inserted
replaced
728:f6588fd14272 | 729:626aa658e2a9 |
---|---|
112 for rev in xrange(start, end, step): | 112 for rev in xrange(start, end, step): |
113 yield str(rev) | 113 yield str(rev) |
114 else: | 114 else: |
115 yield spec | 115 yield spec |
116 | 116 |
117 def make_filename(repo, r, pat, node=None, | 117 def make_file(repo, r, pat, node=None, |
118 total=None, seqno=None, revwidth=None): | 118 total=None, seqno=None, revwidth=None, mode='wb'): |
119 if pat == '-': | |
120 if 'w' in mode: return sys.stdout | |
121 else: return sys.stdin | |
119 node_expander = { | 122 node_expander = { |
120 'H': lambda: hg.hex(node), | 123 'H': lambda: hg.hex(node), |
121 'R': lambda: str(r.rev(node)), | 124 'R': lambda: str(r.rev(node)), |
122 'h': lambda: hg.short(node), | 125 'h': lambda: hg.short(node), |
123 } | 126 } |
147 i += 1 | 150 i += 1 |
148 c = pat[i] | 151 c = pat[i] |
149 c = expander[c]() | 152 c = expander[c]() |
150 newname.append(c) | 153 newname.append(c) |
151 i += 1 | 154 i += 1 |
152 return ''.join(newname) | 155 return open(''.join(newname), mode) |
153 except KeyError, inst: | 156 except KeyError, inst: |
154 raise Abort("invalid format spec '%%%s' in output file name", | 157 raise Abort("invalid format spec '%%%s' in output file name", |
155 inst.args[0]) | 158 inst.args[0]) |
156 | 159 |
157 def dodiff(fp, ui, repo, files=None, node1=None, node2=None): | 160 def dodiff(fp, ui, repo, files=None, node1=None, node2=None): |
407 r = repo.file(relpath(repo, [file1])[0]) | 410 r = repo.file(relpath(repo, [file1])[0]) |
408 if rev: | 411 if rev: |
409 n = r.lookup(rev) | 412 n = r.lookup(rev) |
410 else: | 413 else: |
411 n = r.tip() | 414 n = r.tip() |
412 if opts['output'] and opts['output'] != '-': | 415 fp = make_file(repo, r, opts['output'], node=n) |
413 fp = open(make_filename(repo, r, opts['output'], node=n), 'wb') | |
414 else: | |
415 fp = sys.stdout | |
416 fp.write(r.read(n)) | 416 fp.write(r.read(n)) |
417 | 417 |
418 def clone(ui, source, dest=None, **opts): | 418 def clone(ui, source, dest=None, **opts): |
419 """make a copy of an existing repository""" | 419 """make a copy of an existing repository""" |
420 if dest is None: | 420 if dest is None: |
568 def doexport(ui, repo, changeset, seqno, total, revwidth, opts): | 568 def doexport(ui, repo, changeset, seqno, total, revwidth, opts): |
569 node = repo.lookup(changeset) | 569 node = repo.lookup(changeset) |
570 prev, other = repo.changelog.parents(node) | 570 prev, other = repo.changelog.parents(node) |
571 change = repo.changelog.read(node) | 571 change = repo.changelog.read(node) |
572 | 572 |
573 if opts['output'] and opts['output'] != '-': | 573 fp = make_file(repo, repo.changelog, opts['output'], |
574 outname = make_filename(repo, repo.changelog, opts['output'], | 574 node=node, total=total, seqno=seqno, |
575 node=node, total=total, seqno=seqno, | 575 revwidth=revwidth) |
576 revwidth=revwidth) | 576 if fp != sys.stdout: |
577 ui.note("Exporting patch to '%s'.\n" % outname) | 577 ui.note("Exporting patch to '%s'.\n" % fp.name) |
578 fp = open(outname, 'wb') | |
579 else: | |
580 fp = sys.stdout | |
581 | 578 |
582 fp.write("# HG changeset patch\n") | 579 fp.write("# HG changeset patch\n") |
583 fp.write("# User %s\n" % change[1]) | 580 fp.write("# User %s\n" % change[1]) |
584 fp.write("# Node ID %s\n" % hg.hex(node)) | 581 fp.write("# Node ID %s\n" % hg.hex(node)) |
585 fp.write("# Parent %s\n" % hg.hex(prev)) | 582 fp.write("# Parent %s\n" % hg.hex(prev)) |