Patchwork D11428: dirstate: inline the last two `_drop` usage

login
register
mail settings
Submitter phabricator
Date Sept. 16, 2021, 2:43 p.m.
Message ID <differential-rev-PHID-DREV-eduw2t5n3o6ipfjy6wqm-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/49744/
State Superseded
Headers show

Comments

phabricator - Sept. 16, 2021, 2:43 p.m.
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  The function is small and having the associated code directly inline help use to cleanup the dirstate API.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11428

AFFECTED FILES
  hgext/largefiles/lfcommands.py
  mercurial/dirstate.py
  tests/test-rebuildstate.t

CHANGE DETAILS




To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

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