mercurial/localrepo.py
changeset 3299 a1aad25ccc3e
parent 3296 4546a5e31cb8
child 3321 b7a46cbf3f59
equal deleted inserted replaced
3298:455109df3669 3299:a1aad25ccc3e
   704             t1 = self.wread(fn)
   704             t1 = self.wread(fn)
   705             return self.file(fn).cmp(mf.get(fn, nullid), t1)
   705             return self.file(fn).cmp(mf.get(fn, nullid), t1)
   706 
   706 
   707         def mfmatches(node):
   707         def mfmatches(node):
   708             change = self.changelog.read(node)
   708             change = self.changelog.read(node)
   709             mf = dict(self.manifest.read(change[0]))
   709             mf = self.manifest.read(change[0]).copy()
   710             for fn in mf.keys():
   710             for fn in mf.keys():
   711                 if not match(fn):
   711                 if not match(fn):
   712                     del mf[fn]
   712                     del mf[fn]
   713             return mf
   713             return mf
   714 
   714 
   749                             if wlock is not None:
   749                             if wlock is not None:
   750                                 self.dirstate.update([f], "n")
   750                                 self.dirstate.update([f], "n")
   751             else:
   751             else:
   752                 # we are comparing working dir against non-parent
   752                 # we are comparing working dir against non-parent
   753                 # generate a pseudo-manifest for the working dir
   753                 # generate a pseudo-manifest for the working dir
       
   754                 # XXX: create it in dirstate.py ?
   754                 mf2 = mfmatches(self.dirstate.parents()[0])
   755                 mf2 = mfmatches(self.dirstate.parents()[0])
   755                 for f in lookup + modified + added:
   756                 for f in lookup + modified + added:
   756                     mf2[f] = ""
   757                     mf2[f] = ""
       
   758                     mf2.set(f, execf=util.is_exec(self.wjoin(f), mf2.execf(f)))
   757                 for f in removed:
   759                 for f in removed:
   758                     if f in mf2:
   760                     if f in mf2:
   759                         del mf2[f]
   761                         del mf2[f]
   760         else:
   762         else:
   761             # we are comparing two revisions
   763             # we are comparing two revisions
   769             # reasonable order
   771             # reasonable order
   770             mf2keys = mf2.keys()
   772             mf2keys = mf2.keys()
   771             mf2keys.sort()
   773             mf2keys.sort()
   772             for fn in mf2keys:
   774             for fn in mf2keys:
   773                 if mf1.has_key(fn):
   775                 if mf1.has_key(fn):
   774                     if mf1[fn] != mf2[fn] and (mf2[fn] != "" or fcmp(fn, mf1)):
   776                     if mf1.flags(fn) != mf2.flags(fn) or \
       
   777                        (mf1[fn] != mf2[fn] and (mf2[fn] != "" or fcmp(fn, mf1))):
   775                         modified.append(fn)
   778                         modified.append(fn)
   776                     elif list_clean:
   779                     elif list_clean:
   777                         clean.append(fn)
   780                         clean.append(fn)
   778                     del mf1[fn]
   781                     del mf1[fn]
   779                 else:
   782                 else: