mercurial/localrepo.py
changeset 4370 4ddc6d374265
parent 4334 1cc5fc1d0994
child 4373 109077e7048d
equal deleted inserted replaced
4369:d7ad1e42a368 4370:4ddc6d374265
   917             # read the manifest from node1 before the manifest from node2,
   917             # read the manifest from node1 before the manifest from node2,
   918             # so that we'll hit the manifest cache if we're going through
   918             # so that we'll hit the manifest cache if we're going through
   919             # all the revisions in parent->child order.
   919             # all the revisions in parent->child order.
   920             mf1 = mfmatches(node1)
   920             mf1 = mfmatches(node1)
   921 
   921 
       
   922         mywlock = False
       
   923 
   922         # are we comparing the working directory?
   924         # are we comparing the working directory?
   923         if not node2:
   925         if not node2:
   924             if not wlock:
       
   925                 try:
       
   926                     wlock = self.wlock(wait=0)
       
   927                 except lock.LockException:
       
   928                     wlock = None
       
   929             (lookup, modified, added, removed, deleted, unknown,
   926             (lookup, modified, added, removed, deleted, unknown,
   930              ignored, clean) = self.dirstate.status(files, match,
   927              ignored, clean) = self.dirstate.status(files, match,
   931                                                     list_ignored, list_clean)
   928                                                     list_ignored, list_clean)
   932 
   929 
   933             # are we comparing working dir against its parent?
   930             # are we comparing working dir against its parent?
   940                     for f in lookup:
   937                     for f in lookup:
   941                         if fcmp(f, getnode):
   938                         if fcmp(f, getnode):
   942                             modified.append(f)
   939                             modified.append(f)
   943                         else:
   940                         else:
   944                             clean.append(f)
   941                             clean.append(f)
   945                             if wlock is not None:
   942                             if not wlock and not mywlock:
       
   943                                 mywlock = True
       
   944                                 try:
       
   945                                     wlock = self.wlock(wait=0)
       
   946                                 except lock.LockException:
       
   947                                     pass
       
   948                             if wlock:
   946                                 self.dirstate.update([f], "n")
   949                                 self.dirstate.update([f], "n")
   947             else:
   950             else:
   948                 # we are comparing working dir against non-parent
   951                 # we are comparing working dir against non-parent
   949                 # generate a pseudo-manifest for the working dir
   952                 # generate a pseudo-manifest for the working dir
   950                 # XXX: create it in dirstate.py ?
   953                 # XXX: create it in dirstate.py ?
   955                     mf2[f] = ""
   958                     mf2[f] = ""
   956                     mf2.set(f, is_exec(f), is_link(f))
   959                     mf2.set(f, is_exec(f), is_link(f))
   957                 for f in removed:
   960                 for f in removed:
   958                     if f in mf2:
   961                     if f in mf2:
   959                         del mf2[f]
   962                         del mf2[f]
       
   963 
       
   964             if mywlock and wlock:
       
   965                 wlock.release()
   960         else:
   966         else:
   961             # we are comparing two revisions
   967             # we are comparing two revisions
   962             mf2 = mfmatches(node2)
   968             mf2 = mfmatches(node2)
   963 
   969 
   964         if not compareworking:
   970         if not compareworking: