merge with stable
authorMatt Mackall <mpm@selenic.com>
Fri, 13 Jan 2012 11:29:53 -0600
changeset 15869 e5feebc1f3bb
parent 15868 031c2e4424e1 (current diff)
parent 15848 012b285cf643 (diff)
child 15873 a153a86a472c
merge with stable
mercurial/context.py
tests/test-status.t
--- a/mercurial/context.py	Fri Jan 13 11:29:40 2012 -0600
+++ b/mercurial/context.py	Fri Jan 13 11:29:53 2012 -0600
@@ -385,7 +385,11 @@
 
         returns True if different than fctx.
         """
-        if (fctx._filerev is None and self._repo._encodefilterpats
+        if (fctx._filerev is None
+            and (self._repo._encodefilterpats
+                 # if file data starts with '\1\n', empty metadata block is
+                 # prepended, which adds 4 bytes to fielog.size().
+                 or self.size() - 4 == fctx.size())
             or self.size() == fctx.size()):
             return self._filelog.cmp(self._filenode, fctx.data())
 
--- a/tests/test-status.t	Fri Jan 13 11:29:40 2012 -0600
+++ b/tests/test-status.t	Fri Jan 13 11:29:53 2012 -0600
@@ -272,3 +272,26 @@
     modified
   R removed
   C deleted
+
+  $ cd ..
+
+hg status of binary file starting with '\1\n', a separator for metadata:
+
+  $ hg init repo5
+  $ cd repo5
+  $ printf '\1\nfoo' > 010a
+  $ hg ci -q -A -m 'initial checkin'
+  $ hg status -A
+  C 010a
+
+  $ printf '\1\nbar' > 010a
+  $ hg status -A
+  M 010a
+  $ hg ci -q -m 'modify 010a'
+  $ hg status -A --rev 0:1
+  M 010a
+
+  $ touch empty
+  $ hg ci -q -A -m 'add another file'
+  $ hg status -A --rev 1:2 010a
+  C 010a