274 pathname), |
274 pathname), |
275 mode) |
275 mode) |
276 |
276 |
277 def dodiff(fp, ui, repo, node1, node2, files=None, match=util.always, |
277 def dodiff(fp, ui, repo, node1, node2, files=None, match=util.always, |
278 changes=None, text=False, opts={}): |
278 changes=None, text=False, opts={}): |
|
279 if node1: |
|
280 # reading the data for node1 early allows it to play nicely |
|
281 # with repo.changes and the revlog cache. |
|
282 change = repo.changelog.read(node1) |
|
283 mmap = repo.manifest.read(change[0]) |
|
284 date1 = util.datestr(change[2]) |
|
285 |
279 if not changes: |
286 if not changes: |
280 changes = repo.changes(node1, node2, files, match=match) |
287 changes = repo.changes(node1, node2, files, match=match) |
281 modified, added, removed, deleted, unknown = changes |
288 modified, added, removed, deleted, unknown = changes |
282 if files: |
289 if files: |
283 modified, added, removed = map(lambda x: filterfiles(files, x), |
290 modified, added, removed = map(lambda x: filterfiles(files, x), |
294 return repo.file(f).read(mmap2[f]) |
301 return repo.file(f).read(mmap2[f]) |
295 else: |
302 else: |
296 date2 = util.datestr() |
303 date2 = util.datestr() |
297 if not node1: |
304 if not node1: |
298 node1 = repo.dirstate.parents()[0] |
305 node1 = repo.dirstate.parents()[0] |
|
306 change = repo.changelog.read(node1) |
|
307 mmap = repo.manifest.read(change[0]) |
|
308 date1 = util.datestr(change[2]) |
299 def read(f): |
309 def read(f): |
300 return repo.wread(f) |
310 return repo.wread(f) |
301 |
311 |
302 if ui.quiet: |
312 if ui.quiet: |
303 r = None |
313 r = None |
304 else: |
314 else: |
305 hexfunc = ui.verbose and hex or short |
315 hexfunc = ui.verbose and hex or short |
306 r = [hexfunc(node) for node in [node1, node2] if node] |
316 r = [hexfunc(node) for node in [node1, node2] if node] |
307 |
|
308 change = repo.changelog.read(node1) |
|
309 mmap = repo.manifest.read(change[0]) |
|
310 date1 = util.datestr(change[2]) |
|
311 |
317 |
312 diffopts = ui.diffopts() |
318 diffopts = ui.diffopts() |
313 showfunc = opts.get('show_function') or diffopts['showfunc'] |
319 showfunc = opts.get('show_function') or diffopts['showfunc'] |
314 ignorews = opts.get('ignore_all_space') or diffopts['ignorews'] |
320 ignorews = opts.get('ignore_all_space') or diffopts['ignorews'] |
315 for f in modified: |
321 for f in modified: |