mercurial/dirstatemap.py
changeset 47688 b37ab6b5c438
parent 47687 e59bd6723f2f
child 47689 f2aef39abc14
equal deleted inserted replaced
47687:e59bd6723f2f 47688:b37ab6b5c438
   152             old_entry is None or old_entry.removed
   152             old_entry is None or old_entry.removed
   153         ) and "_dirs" in self.__dict__:
   153         ) and "_dirs" in self.__dict__:
   154             self._dirs.addpath(filename)
   154             self._dirs.addpath(filename)
   155         if old_entry is None and "_alldirs" in self.__dict__:
   155         if old_entry is None and "_alldirs" in self.__dict__:
   156             self._alldirs.addpath(filename)
   156             self._alldirs.addpath(filename)
       
   157 
       
   158     def _dirs_decr(self, filename, old_entry=None):
       
   159         """decremente the dirstate counter if applicable"""
       
   160         if old_entry is not None:
       
   161             if "_dirs" in self.__dict__ and not old_entry.removed:
       
   162                 self._dirs.delpath(filename)
       
   163             if "_alldirs" in self.__dict__:
       
   164                 self._alldirs.delpath(filename)
       
   165         if "filefoldmap" in self.__dict__:
       
   166             normed = util.normcase(filename)
       
   167             self.filefoldmap.pop(normed, None)
   157 
   168 
   158     def addfile(
   169     def addfile(
   159         self,
   170         self,
   160         f,
   171         f,
   161         mode=0,
   172         mode=0,
   245         """
   256         """
   246         Remove a file from the dirstate.  Returns True if the file was
   257         Remove a file from the dirstate.  Returns True if the file was
   247         previously recorded.
   258         previously recorded.
   248         """
   259         """
   249         old_entry = self._map.pop(f, None)
   260         old_entry = self._map.pop(f, None)
   250         exists = False
   261         self._dirs_decr(f, old_entry=old_entry)
   251         oldstate = b'?'
       
   252         if old_entry is not None:
       
   253             exists = True
       
   254             oldstate = old_entry.state
       
   255         if exists:
       
   256             if oldstate != b"r" and "_dirs" in self.__dict__:
       
   257                 self._dirs.delpath(f)
       
   258             if "_alldirs" in self.__dict__:
       
   259                 self._alldirs.delpath(f)
       
   260         if "filefoldmap" in self.__dict__:
       
   261             normed = util.normcase(f)
       
   262             self.filefoldmap.pop(normed, None)
       
   263         self.nonnormalset.discard(f)
   262         self.nonnormalset.discard(f)
   264         return exists
   263         return old_entry is not None
   265 
   264 
   266     def clearambiguoustimes(self, files, now):
   265     def clearambiguoustimes(self, files, now):
   267         for f in files:
   266         for f in files:
   268             e = self.get(f)
   267             e = self.get(f)
   269             if e is not None and e.need_delay(now):
   268             if e is not None and e.need_delay(now):