mercurial/dirstatemap.py
changeset 47990 0d2a404f1932
parent 47983 ffde999a3ea9
child 47996 aa442fde0ea5
equal deleted inserted replaced
47989:87b3010c08e0 47990:0d2a404f1932
   305             self.otherparentset.add(filename)
   305             self.otherparentset.add(filename)
   306         else:
   306         else:
   307             self.otherparentset.discard(filename)
   307             self.otherparentset.discard(filename)
   308         self._map[filename] = entry
   308         self._map[filename] = entry
   309 
   309 
       
   310     def set_tracked(self, filename):
       
   311         new = False
       
   312         entry = self.get(filename)
       
   313         if entry is None:
       
   314             self._dirs_incr(filename)
       
   315             entry = DirstateItem(
       
   316                 p1_tracked=False,
       
   317                 p2_tracked=False,
       
   318                 wc_tracked=True,
       
   319                 merged=False,
       
   320                 clean_p1=False,
       
   321                 clean_p2=False,
       
   322                 possibly_dirty=False,
       
   323                 parentfiledata=None,
       
   324             )
       
   325             self._map[filename] = entry
       
   326             if entry.dm_nonnormal:
       
   327                 self.nonnormalset.add(filename)
       
   328             new = True
       
   329         elif not entry.tracked:
       
   330             self._dirs_incr(filename, entry)
       
   331             entry.set_tracked()
       
   332             new = True
       
   333         else:
       
   334             # XXX This is probably overkill for more case, but we need this to
       
   335             # fully replace the `normallookup` call with `set_tracked` one.
       
   336             # Consider smoothing this in the future.
       
   337             self.set_possibly_dirty(filename)
       
   338         return new
       
   339 
   310     def set_untracked(self, f):
   340     def set_untracked(self, f):
   311         """Mark a file as no longer tracked in the dirstate map"""
   341         """Mark a file as no longer tracked in the dirstate map"""
   312         entry = self.get(f)
   342         entry = self.get(f)
   313         if entry is None:
   343         if entry is None:
   314             return False
   344             return False
   661                 self.addfile(filename, mode=mode, size=size, mtime=mtime)
   691                 self.addfile(filename, mode=mode, size=size, mtime=mtime)
   662                 self.nonnormalset.discard(filename)
   692                 self.nonnormalset.discard(filename)
   663             else:
   693             else:
   664                 assert False, 'unreachable'
   694                 assert False, 'unreachable'
   665 
   695 
       
   696         def set_tracked(self, filename):
       
   697             new = False
       
   698             entry = self.get(filename)
       
   699             if entry is None:
       
   700                 self.addfile(filename, added=True)
       
   701                 new = True
       
   702             elif not entry.tracked:
       
   703                 entry.set_tracked()
       
   704                 self._rustmap.set_v1(filename, entry)
       
   705                 new = True
       
   706             else:
       
   707                 # XXX This is probably overkill for more case, but we need this to
       
   708                 # fully replace the `normallookup` call with `set_tracked` one.
       
   709                 # Consider smoothing this in the future.
       
   710                 self.set_possibly_dirty(filename)
       
   711             return new
       
   712 
   666         def set_untracked(self, f):
   713         def set_untracked(self, f):
   667             """Mark a file as no longer tracked in the dirstate map"""
   714             """Mark a file as no longer tracked in the dirstate map"""
   668             # in merge is only trigger more logic, so it "fine" to pass it.
   715             # in merge is only trigger more logic, so it "fine" to pass it.
   669             #
   716             #
   670             # the inner rust dirstate map code need to be adjusted once the API
   717             # the inner rust dirstate map code need to be adjusted once the API