mercurial/cmdutil.py
changeset 25259 5b05f10c5024
parent 25258 f37a69ec3f47
child 25271 1b1eaf1885df
equal deleted inserted replaced
25258:f37a69ec3f47 25259:5b05f10c5024
  3121         if p2 != nullid:
  3121         if p2 != nullid:
  3122             normal = repo.dirstate.normallookup
  3122             normal = repo.dirstate.normallookup
  3123         else:
  3123         else:
  3124             normal = repo.dirstate.normal
  3124             normal = repo.dirstate.normal
  3125 
  3125 
       
  3126     newlyaddedandmodifiedfiles = set()
  3126     if interactive:
  3127     if interactive:
  3127         # Prompt the user for changes to revert
  3128         # Prompt the user for changes to revert
  3128         torevert = [repo.wjoin(f) for f in actions['revert'][0]]
  3129         torevert = [repo.wjoin(f) for f in actions['revert'][0]]
  3129         m = scmutil.match(ctx, torevert, {})
  3130         m = scmutil.match(ctx, torevert, {})
  3130         diffopts = patch.difffeatureopts(repo.ui, whitespace=True)
  3131         diffopts = patch.difffeatureopts(repo.ui, whitespace=True)
  3135         try:
  3136         try:
  3136             chunks = recordfilter(repo.ui, originalchunks)
  3137             chunks = recordfilter(repo.ui, originalchunks)
  3137         except patch.PatchError, err:
  3138         except patch.PatchError, err:
  3138             raise util.Abort(_('error parsing patch: %s') % err)
  3139             raise util.Abort(_('error parsing patch: %s') % err)
  3139 
  3140 
       
  3141         newlyaddedandmodifiedfiles = newandmodified(chunks, originalchunks)
  3140         # Apply changes
  3142         # Apply changes
  3141         fp = cStringIO.StringIO()
  3143         fp = cStringIO.StringIO()
  3142         for c in chunks:
  3144         for c in chunks:
  3143             c.write(fp)
  3145             c.write(fp)
  3144         dopatch = fp.tell()
  3146         dopatch = fp.tell()
  3158                 # changes may be overlooked without normallookup,
  3160                 # changes may be overlooked without normallookup,
  3159                 # if size isn't changed at reverting
  3161                 # if size isn't changed at reverting
  3160                 repo.dirstate.normallookup(f)
  3162                 repo.dirstate.normallookup(f)
  3161 
  3163 
  3162     for f in actions['add'][0]:
  3164     for f in actions['add'][0]:
  3163         checkout(f)
  3165         # Don't checkout modified files, they are already created by the diff
  3164         repo.dirstate.add(f)
  3166         if f not in newlyaddedandmodifiedfiles:
       
  3167             checkout(f)
       
  3168             repo.dirstate.add(f)
  3165 
  3169 
  3166     normal = repo.dirstate.normallookup
  3170     normal = repo.dirstate.normallookup
  3167     if node == parent and p2 == nullid:
  3171     if node == parent and p2 == nullid:
  3168         normal = repo.dirstate.normal
  3172         normal = repo.dirstate.normal
  3169     for f in actions['undelete'][0]:
  3173     for f in actions['undelete'][0]: