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") |