mercurial/commands.py
changeset 739 36edb39e8e8c
parent 738 32a97c9d8e98
child 740 d2422f10c136
equal deleted inserted replaced
738:32a97c9d8e98 739:36edb39e8e8c
   114             for rev in xrange(start, end, step):
   114             for rev in xrange(start, end, step):
   115                 yield str(rev)
   115                 yield str(rev)
   116         else:
   116         else:
   117             yield spec
   117             yield spec
   118 
   118 
   119 def make_file(repo, r, pat, node=None,
   119 def make_filename(repo, r, pat, node=None,
   120               total=None, seqno=None, revwidth=None, mode='wb'):
   120                   total=None, seqno=None, revwidth=None):
   121     if not pat or pat == '-':
       
   122         if 'w' in mode: return sys.stdout
       
   123         else: return sys.stdin
       
   124     if hasattr(pat, 'write') and 'w' in mode:
       
   125         return pat
       
   126     if hasattr(pat, 'read') and 'r' in mode:
       
   127         return pat
       
   128     node_expander = {
   121     node_expander = {
   129         'H': lambda: hg.hex(node),
   122         'H': lambda: hg.hex(node),
   130         'R': lambda: str(r.rev(node)),
   123         'R': lambda: str(r.rev(node)),
   131         'h': lambda: hg.short(node),
   124         'h': lambda: hg.short(node),
   132         }
   125         }
   156                 i += 1
   149                 i += 1
   157                 c = pat[i]
   150                 c = pat[i]
   158                 c = expander[c]()
   151                 c = expander[c]()
   159             newname.append(c)
   152             newname.append(c)
   160             i += 1
   153             i += 1
   161         return open(''.join(newname), mode)
   154         return ''.join(newname)
   162     except KeyError, inst:
   155     except KeyError, inst:
   163         raise Abort("invalid format spec '%%%s' in output file name",
   156         raise Abort("invalid format spec '%%%s' in output file name",
   164                     inst.args[0])
   157                     inst.args[0])
       
   158 
       
   159 def make_file(repo, r, pat, node=None,
       
   160               total=None, seqno=None, revwidth=None, mode='wb'):
       
   161     if not pat or pat == '-':
       
   162         if 'w' in mode: return sys.stdout
       
   163         else: return sys.stdin
       
   164     if hasattr(pat, 'write') and 'w' in mode:
       
   165         return pat
       
   166     if hasattr(pat, 'read') and 'r' in mode:
       
   167         return pat
       
   168     return open(make_filename(repo, r, pat, node, total, seqno, revwidth),
       
   169                 mode)
   165 
   170 
   166 def dodiff(fp, ui, repo, files=None, node1=None, node2=None):
   171 def dodiff(fp, ui, repo, files=None, node1=None, node2=None):
   167     def date(c):
   172     def date(c):
   168         return time.asctime(time.gmtime(float(c[2].split(' ')[0])))
   173         return time.asctime(time.gmtime(float(c[2].split(' ')[0])))
   169 
   174 
   588         fp.write("# Parent  %s\n" % hg.hex(other))
   593         fp.write("# Parent  %s\n" % hg.hex(other))
   589     fp.write(change[4].rstrip())
   594     fp.write(change[4].rstrip())
   590     fp.write("\n\n")
   595     fp.write("\n\n")
   591 
   596 
   592     dodiff(fp, ui, repo, None, prev, node)
   597     dodiff(fp, ui, repo, None, prev, node)
       
   598     if fp != sys.stdout: fp.close()
   593 
   599 
   594 def export(ui, repo, *changesets, **opts):
   600 def export(ui, repo, *changesets, **opts):
   595     """dump the header and diffs for one or more changesets"""
   601     """dump the header and diffs for one or more changesets"""
   596     if not changesets:
   602     if not changesets:
   597         raise Abort("export requires at least one changeset")
   603         raise Abort("export requires at least one changeset")