mercurial/commands.py
changeset 1803 06e7447c7302
parent 1801 38e19b1d3de8
child 1804 c3f959c1c3ff
equal deleted inserted replaced
1802:8a7a24b96697 1803:06e7447c7302
   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: