diff --git a/hgext/largefiles/lfcommands.py b/hgext/largefiles/lfcommands.py --- a/hgext/largefiles/lfcommands.py +++ b/hgext/largefiles/lfcommands.py @@ -577,7 +577,7 @@ repo.wvfs.unlinkpath(lfutil.standin(f)) # This needs to happen for dropped files, otherwise they stay in # the M state. - lfdirstate._drop(f) + lfdirstate._map.dropfile(f) statuswriter(_(b'getting changed largefiles\n')) cachelfiles(ui, repo, None, lfiles) diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py --- a/mercurial/dirstate.py +++ b/mercurial/dirstate.py @@ -560,7 +560,9 @@ possibly_dirty = True elif not (p1_tracked or wc_tracked): # the file is no longer relevant to anyone - self._drop(filename) + if self._map.dropfile(filename): + self._dirty = True + self._updatedfiles.add(filename) elif (not p1_tracked) and wc_tracked: if entry is not None and entry.added: return # avoid dropping copy information (maybe?) @@ -742,12 +744,6 @@ self._addpath(f, possibly_dirty=True) self._map.copymap.pop(f, None) - def _drop(self, filename): - """internal function to drop a file from the dirstate""" - if self._map.dropfile(filename): - self._dirty = True - self._updatedfiles.add(filename) - def _discoverpath(self, path, normed, ignoremissing, exists, storemap): if exists is None: exists = os.path.lexists(os.path.join(self._root, path)) @@ -860,7 +856,8 @@ for f in to_lookup: self._normallookup(f) for f in to_drop: - self._drop(f) + if self._map.dropfile(f): + self._updatedfiles.add(f) self._dirty = True diff --git a/tests/test-rebuildstate.t b/tests/test-rebuildstate.t --- a/tests/test-rebuildstate.t +++ b/tests/test-rebuildstate.t @@ -19,7 +19,8 @@ > if opts.get('normal_lookup'): > repo.dirstate._normallookup(file) > else: - > repo.dirstate._drop(file) + > repo.dirstate._map.dropfile(file) + > repo.dirstate._dirty = True > > repo.dirstate.write(repo.currenttransaction()) > finally: