mercurial/dirstatemap.py
changeset 48129 a39192fc7c56
parent 48128 a8ff00ad290b
child 48130 743808de0c03
equal deleted inserted replaced
48128:a8ff00ad290b 48129:a39192fc7c56
   106 
   106 
   107         The fact it is actually new is the responsability of the caller
   107         The fact it is actually new is the responsability of the caller
   108         """
   108         """
   109 
   109 
   110     ### method to manipulate the entries
   110     ### method to manipulate the entries
       
   111 
       
   112     def set_tracked(self, filename):
       
   113         new = False
       
   114         entry = self.get(filename)
       
   115         if entry is None:
       
   116             self._dirs_incr(filename)
       
   117             entry = DirstateItem(
       
   118                 p1_tracked=False,
       
   119                 p2_tracked=False,
       
   120                 wc_tracked=True,
       
   121                 merged=False,
       
   122                 clean_p1=False,
       
   123                 clean_p2=False,
       
   124                 possibly_dirty=False,
       
   125                 parentfiledata=None,
       
   126             )
       
   127 
       
   128             self._insert_entry(filename, entry)
       
   129             new = True
       
   130         elif not entry.tracked:
       
   131             self._dirs_incr(filename, entry)
       
   132             entry.set_tracked()
       
   133             self._refresh_entry(filename, entry)
       
   134             new = True
       
   135         else:
       
   136             # XXX This is probably overkill for more case, but we need this to
       
   137             # fully replace the `normallookup` call with `set_tracked` one.
       
   138             # Consider smoothing this in the future.
       
   139             entry.set_possibly_dirty()
       
   140             self._refresh_entry(filename, entry)
       
   141         return new
   111 
   142 
   112     def set_untracked(self, f):
   143     def set_untracked(self, f):
   113         """Mark a file as no longer tracked in the dirstate map"""
   144         """Mark a file as no longer tracked in the dirstate map"""
   114         entry = self.get(f)
   145         entry = self.get(f)
   115         if entry is None:
   146         if entry is None:
   489             clean_p2=clean_p2,
   520             clean_p2=clean_p2,
   490             possibly_dirty=possibly_dirty,
   521             possibly_dirty=possibly_dirty,
   491             parentfiledata=parentfiledata,
   522             parentfiledata=parentfiledata,
   492         )
   523         )
   493         self._map[filename] = entry
   524         self._map[filename] = entry
   494 
       
   495     def set_tracked(self, filename):
       
   496         new = False
       
   497         entry = self.get(filename)
       
   498         if entry is None:
       
   499             self._dirs_incr(filename)
       
   500             entry = DirstateItem(
       
   501                 p1_tracked=False,
       
   502                 p2_tracked=False,
       
   503                 wc_tracked=True,
       
   504                 merged=False,
       
   505                 clean_p1=False,
       
   506                 clean_p2=False,
       
   507                 possibly_dirty=False,
       
   508                 parentfiledata=None,
       
   509             )
       
   510             self._map[filename] = entry
       
   511             new = True
       
   512         elif not entry.tracked:
       
   513             self._dirs_incr(filename, entry)
       
   514             entry.set_tracked()
       
   515             new = True
       
   516         else:
       
   517             # XXX This is probably overkill for more case, but we need this to
       
   518             # fully replace the `normallookup` call with `set_tracked` one.
       
   519             # Consider smoothing this in the future.
       
   520             self.set_possibly_dirty(filename)
       
   521         return new
       
   522 
   525 
   523 
   526 
   524 if rustmod is not None:
   527 if rustmod is not None:
   525 
   528 
   526     class dirstatemap(_dirstatemapcommon):
   529     class dirstatemap(_dirstatemapcommon):
   892                 mode, size, mtime = parentfiledata
   895                 mode, size, mtime = parentfiledata
   893                 self.addfile(filename, mode=mode, size=size, mtime=mtime)
   896                 self.addfile(filename, mode=mode, size=size, mtime=mtime)
   894             else:
   897             else:
   895                 assert False, 'unreachable'
   898                 assert False, 'unreachable'
   896 
   899 
   897         def set_tracked(self, filename):
       
   898             new = False
       
   899             entry = self.get(filename)
       
   900             if entry is None:
       
   901                 self.addfile(filename, added=True)
       
   902                 new = True
       
   903             elif not entry.tracked:
       
   904                 entry.set_tracked()
       
   905                 self._map.set_dirstate_item(filename, entry)
       
   906                 new = True
       
   907             else:
       
   908                 # XXX This is probably overkill for more case, but we need this to
       
   909                 # fully replace the `normallookup` call with `set_tracked` one.
       
   910                 # Consider smoothing this in the future.
       
   911                 self.set_possibly_dirty(filename)
       
   912             return new
       
   913 
       
   914         ### Legacy method we need to get rid of
   900         ### Legacy method we need to get rid of
   915 
   901 
   916         def addfile(
   902         def addfile(
   917             self,
   903             self,
   918             f,
   904             f,