1167 def _addmodehdr(header, omode, nmode): |
1167 def _addmodehdr(header, omode, nmode): |
1168 if omode != nmode: |
1168 if omode != nmode: |
1169 header.append('old mode %s\n' % omode) |
1169 header.append('old mode %s\n' % omode) |
1170 header.append('new mode %s\n' % nmode) |
1170 header.append('new mode %s\n' % nmode) |
1171 |
1171 |
1172 def diff(repo, node1=None, node2=None, match=None, |
1172 def diff(repo, node1=None, node2=None, match=None, changes=None, opts=None): |
1173 fp=None, changes=None, opts=None): |
1173 '''yields diff of changes to files between two nodes, or node and |
1174 '''print diff of changes to files between two nodes, or node and |
|
1175 working directory. |
1174 working directory. |
1176 |
1175 |
1177 if node1 is None, use first dirstate parent instead. |
1176 if node1 is None, use first dirstate parent instead. |
1178 if node2 is None, compare node1 with working directory.''' |
1177 if node2 is None, compare node1 with working directory.''' |
1179 |
1178 |
1180 if not match: |
1179 if not match: |
1181 match = cmdutil.matchall(repo) |
1180 match = cmdutil.matchall(repo) |
1182 |
1181 |
1183 if opts is None: |
1182 if opts is None: |
1184 opts = mdiff.defaultopts |
1183 opts = mdiff.defaultopts |
1185 if fp is None: |
|
1186 fp = repo.ui |
|
1187 |
1184 |
1188 if not node1: |
1185 if not node1: |
1189 node1 = repo.dirstate.parents()[0] |
1186 node1 = repo.dirstate.parents()[0] |
1190 |
1187 |
1191 flcache = {} |
1188 flcache = {} |
1272 else: |
1269 else: |
1273 text = mdiff.unidiff(to, date1, |
1270 text = mdiff.unidiff(to, date1, |
1274 # ctx2 date may be dynamic |
1271 # ctx2 date may be dynamic |
1275 tn, util.datestr(ctx2.date()), |
1272 tn, util.datestr(ctx2.date()), |
1276 a, b, r, opts=opts) |
1273 a, b, r, opts=opts) |
1277 if text or len(header) > 1: |
1274 if header and (text or len(header) > 1): |
1278 fp.write(''.join(header)) |
1275 yield ''.join(header) |
1279 fp.write(text) |
1276 if text: |
|
1277 yield text |
1280 |
1278 |
1281 def export(repo, revs, template='hg-%h.patch', fp=None, switch_parent=False, |
1279 def export(repo, revs, template='hg-%h.patch', fp=None, switch_parent=False, |
1282 opts=None): |
1280 opts=None): |
1283 '''export changesets as hg patches.''' |
1281 '''export changesets as hg patches.''' |
1284 |
1282 |
1310 if len(parents) > 1: |
1308 if len(parents) > 1: |
1311 fp.write("# Parent %s\n" % hex(parents[1])) |
1309 fp.write("# Parent %s\n" % hex(parents[1])) |
1312 fp.write(ctx.description().rstrip()) |
1310 fp.write(ctx.description().rstrip()) |
1313 fp.write("\n\n") |
1311 fp.write("\n\n") |
1314 |
1312 |
1315 diff(repo, prev, node, fp=fp, opts=opts) |
1313 for chunk in diff(repo, prev, node, opts=opts): |
|
1314 fp.write(chunk) |
1316 if fp not in (sys.stdout, repo.ui): |
1315 if fp not in (sys.stdout, repo.ui): |
1317 fp.close() |
1316 fp.close() |
1318 |
1317 |
1319 for seqno, rev in enumerate(revs): |
1318 for seqno, rev in enumerate(revs): |
1320 single(rev, seqno+1, fp) |
1319 single(rev, seqno+1, fp) |