Mercurial > public > mercurial-scm > hg-stable
diff mercurial/dirstate.py @ 47521:abed645b8e96
dirstate: move the handling of special case within the dirstatemap
The dirstatemap is as well, if not better, suited to decided how to encode the
various case. So we move the associated code in the dirstatemap `addfile`
method.
This means the dirstate no longer need to know about the various magic value
used in the dirstate V1 format.
The pain of the messy API start to be quite palpable in Rust, we should clean
this up once the current large refactoring is dealt with.
Differential Revision: https://phab.mercurial-scm.org/D10963
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sun, 04 Jul 2021 20:23:19 +0200 |
parents | 28632eb3ca3e |
children | 587bb99ea311 |
line wrap: on
line diff
--- a/mercurial/dirstate.py Sun Jul 04 20:41:27 2021 +0200 +++ b/mercurial/dirstate.py Sun Jul 04 20:23:19 2021 +0200 @@ -43,11 +43,10 @@ propertycache = util.propertycache filecache = scmutil.filecache -_rangemask = 0x7FFFFFFF +_rangemask = dirstatemap.rangemask dirstatetuple = parsers.dirstatetuple - # a special value used internally for `size` if the file come from the other parent FROM_P2 = dirstatemap.FROM_P2 @@ -455,8 +454,8 @@ f, state, mode, - size=NONNORMAL, - mtime=AMBIGUOUS_TIME, + size=None, + mtime=None, from_p2=False, possibly_dirty=False, ): @@ -476,25 +475,18 @@ msg = _(b'file %r in dirstate clashes with %r') msg %= (pycompat.bytestr(d), pycompat.bytestr(f)) raise error.Abort(msg) - if state == b'a': - assert not possibly_dirty - assert not from_p2 - size = NONNORMAL - mtime = AMBIGUOUS_TIME - elif from_p2: - assert not possibly_dirty - size = FROM_P2 - mtime = AMBIGUOUS_TIME - elif possibly_dirty: - mtime = AMBIGUOUS_TIME - else: - assert size != FROM_P2 - assert size != NONNORMAL - size = size & _rangemask - mtime = mtime & _rangemask self._dirty = True self._updatedfiles.add(f) - self._map.addfile(f, oldstate, state, mode, size, mtime) + self._map.addfile( + f, + oldstate, + state=state, + mode=mode, + size=size, + mtime=mtime, + from_p2=from_p2, + possibly_dirty=possibly_dirty, + ) def normal(self, f, parentfiledata=None): """Mark a file normal and clean.