diff mercurial/dirstate.py @ 6297:fed1a9c22076

dirstate.remove: during merges, remember the previous file state We encode the previous state as a negative file size (AFAICS, previous versions of hg always have size == 0 when state == 'r'). We save the state of 'm'erged and dirty files, because they're the two states that indicate that a file has to be committed on a merge to correctly record per-file history.
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Tue, 18 Mar 2008 04:07:39 -0300
parents bfd49ce0db64
children 53cbb33e1269
line wrap: on
line diff
--- a/mercurial/dirstate.py	Tue Mar 18 04:07:39 2008 -0300
+++ b/mercurial/dirstate.py	Tue Mar 18 04:07:39 2008 -0300
@@ -270,8 +270,15 @@
         'mark a file removed'
         self._dirty = True
         self._changepath(f, 'r')
-        self._map[f] = ('r', 0, 0, 0, 0)
-        if f in self._copymap:
+        size = 0
+        if self._pl[1] != nullid and f in self._map:
+            entry = self._map[f]
+            if entry[0] == 'm':
+                size = -1
+            elif entry[0] == 'n' and entry[2] == -2:
+                size = -2
+        self._map[f] = ('r', 0, size, 0, 0)
+        if size == 0 and f in self._copymap:
             del self._copymap[f]
 
     def merge(self, f):