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): |