changeset 17094:c2016bae3b97

dirstate: factor common update code into _addpath Factor update code common to all callers of _addpath into _addpath. By centralizing the update code here, it provides one place to put updates to new data structures - in a future patch. It also removes a few lines of duplicate code.
author Joshua Redstone <joshua.redstone@fb.com>
date Mon, 18 Jun 2012 08:06:42 -0700
parents cd8e109b673b
children 45cf6a91a02d
files mercurial/dirstate.py
diffstat 1 files changed, 9 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/dirstate.py	Mon Jul 02 16:54:01 2012 +0200
+++ b/mercurial/dirstate.py	Mon Jun 18 08:06:42 2012 -0700
@@ -312,7 +312,8 @@
         if self[f] not in "?r" and "_dirs" in self.__dict__:
             _decdirs(self._dirs, f)
 
-    def _addpath(self, f, check=False):
+    def _addpath(self, f, state, mode, size, mtime, check=False):
+        assert state not in "?r"
         oldstate = self[f]
         if check or oldstate == "r":
             scmutil.checkfilename(f)
@@ -327,14 +328,14 @@
                         _('file %r in dirstate clashes with %r') % (d, f))
         if oldstate in "?r" and "_dirs" in self.__dict__:
             _incdirs(self._dirs, f)
+        self._dirty = True
+        self._map[f] = (state, mode, size, mtime)
 
     def normal(self, f):
         '''Mark a file normal and clean.'''
-        self._dirty = True
-        self._addpath(f)
         s = os.lstat(self._join(f))
         mtime = int(s.st_mtime)
-        self._map[f] = ('n', s.st_mode, s.st_size, mtime)
+        self._addpath(f, 'n', s.st_mode, s.st_size, mtime)
         if f in self._copymap:
             del self._copymap[f]
         if mtime > self._lastnormaltime:
@@ -361,9 +362,7 @@
                 return
             if entry[0] == 'm' or entry[0] == 'n' and entry[2] == -2:
                 return
-        self._dirty = True
-        self._addpath(f)
-        self._map[f] = ('n', 0, -1, -1)
+        self._addpath(f, 'n', 0, -1, -1)
         if f in self._copymap:
             del self._copymap[f]
 
@@ -372,17 +371,13 @@
         if self._pl[1] == nullid:
             raise util.Abort(_("setting %r to other parent "
                                "only allowed in merges") % f)
-        self._dirty = True
-        self._addpath(f)
-        self._map[f] = ('n', 0, -2, -1)
+        self._addpath(f, 'n', 0, -2, -1)
         if f in self._copymap:
             del self._copymap[f]
 
     def add(self, f):
         '''Mark a file added.'''
-        self._dirty = True
-        self._addpath(f, True)
-        self._map[f] = ('a', 0, -1, -1)
+        self._addpath(f, 'a', 0, -1, -1, True)
         if f in self._copymap:
             del self._copymap[f]
 
@@ -406,10 +401,8 @@
         '''Mark a file merged.'''
         if self._pl[1] == nullid:
             return self.normallookup(f)
-        self._dirty = True
         s = os.lstat(self._join(f))
-        self._addpath(f)
-        self._map[f] = ('m', s.st_mode, s.st_size, int(s.st_mtime))
+        self._addpath(f, 'm', s.st_mode, s.st_size, int(s.st_mtime))
         if f in self._copymap:
             del self._copymap[f]