mercurial/dirstatemap.py
changeset 47521 abed645b8e96
parent 47514 559aee84b889
child 47524 69a463a4f193
equal deleted inserted replaced
47520:5decb7a49bb6 47521:abed645b8e96
    32 # a special value used internally for `size` if the file is modified/merged/added
    32 # a special value used internally for `size` if the file is modified/merged/added
    33 NONNORMAL = -1
    33 NONNORMAL = -1
    34 
    34 
    35 # a special value used internally for `time` if the time is ambigeous
    35 # a special value used internally for `time` if the time is ambigeous
    36 AMBIGUOUS_TIME = -1
    36 AMBIGUOUS_TIME = -1
       
    37 
       
    38 rangemask = 0x7FFFFFFF
    37 
    39 
    38 
    40 
    39 class dirstatemap(object):
    41 class dirstatemap(object):
    40     """Map encapsulating the dirstate's contents.
    42     """Map encapsulating the dirstate's contents.
    41 
    43 
   140 
   142 
   141     def preload(self):
   143     def preload(self):
   142         """Loads the underlying data, if it's not already loaded"""
   144         """Loads the underlying data, if it's not already loaded"""
   143         self._map
   145         self._map
   144 
   146 
   145     def addfile(self, f, oldstate, state, mode, size, mtime):
   147     def addfile(
       
   148         self,
       
   149         f,
       
   150         oldstate,
       
   151         state,
       
   152         mode,
       
   153         size=None,
       
   154         mtime=None,
       
   155         from_p2=False,
       
   156         possibly_dirty=False,
       
   157     ):
   146         """Add a tracked file to the dirstate."""
   158         """Add a tracked file to the dirstate."""
       
   159         if state == b'a':
       
   160             assert not possibly_dirty
       
   161             assert not from_p2
       
   162             size = NONNORMAL
       
   163             mtime = AMBIGUOUS_TIME
       
   164         elif from_p2:
       
   165             assert not possibly_dirty
       
   166             size = FROM_P2
       
   167             mtime = AMBIGUOUS_TIME
       
   168         elif possibly_dirty:
       
   169             size = NONNORMAL
       
   170             mtime = AMBIGUOUS_TIME
       
   171         else:
       
   172             assert size != FROM_P2
       
   173             assert size != NONNORMAL
       
   174             size = size & rangemask
       
   175             mtime = mtime & rangemask
       
   176         assert size is not None
       
   177         assert mtime is not None
   147         if oldstate in b"?r" and "_dirs" in self.__dict__:
   178         if oldstate in b"?r" and "_dirs" in self.__dict__:
   148             self._dirs.addpath(f)
   179             self._dirs.addpath(f)
   149         if oldstate == b"?" and "_alldirs" in self.__dict__:
   180         if oldstate == b"?" and "_alldirs" in self.__dict__:
   150             self._alldirs.addpath(f)
   181             self._alldirs.addpath(f)
   151         self._map[f] = dirstatetuple(state, mode, size, mtime)
   182         self._map[f] = dirstatetuple(state, mode, size, mtime)
   423                 b"experimental",
   454                 b"experimental",
   424                 b"dirstate-tree.in-memory",
   455                 b"dirstate-tree.in-memory",
   425                 False,
   456                 False,
   426             )
   457             )
   427 
   458 
   428         def addfile(self, *args, **kwargs):
   459         def addfile(
   429             return self._rustmap.addfile(*args, **kwargs)
   460             self,
       
   461             f,
       
   462             oldstate,
       
   463             state,
       
   464             mode,
       
   465             size=None,
       
   466             mtime=None,
       
   467             from_p2=False,
       
   468             possibly_dirty=False,
       
   469         ):
       
   470             return self._rustmap.addfile(
       
   471                 f,
       
   472                 oldstate,
       
   473                 state,
       
   474                 mode,
       
   475                 size,
       
   476                 mtime,
       
   477                 from_p2,
       
   478                 possibly_dirty,
       
   479             )
   430 
   480 
   431         def removefile(self, *args, **kwargs):
   481         def removefile(self, *args, **kwargs):
   432             return self._rustmap.removefile(*args, **kwargs)
   482             return self._rustmap.removefile(*args, **kwargs)
   433 
   483 
   434         def dropfile(self, *args, **kwargs):
   484         def dropfile(self, *args, **kwargs):