linkrev: use the right manifest content when adjusting linrev (
issue4499)
When the manifest revision is stored as a delta against a non-parent revision,
'_adjustlinkrev' could miss some file update because it was using the delta
only. We now use the 'fastread' method that uses the delta only when it makes
sense.
A test showcasing on the of possible issue have been added.
--- a/mercurial/context.py Wed Jan 14 16:57:00 2015 -0800
+++ b/mercurial/context.py Wed Jan 14 17:21:09 2015 -0800
@@ -49,7 +49,7 @@
if path in ac[3]: # checking the 'files' field.
# The file has been touched, check if the content is similar
# to the one we search for.
- if fnode == ma.readdelta(ac[0]).get(path):
+ if fnode == ma.readfast(ac[0]).get(path):
return a
# In theory, we should never get out of that loop without a result. But
# if manifest uses a buggy file revision (not children of the one it
--- a/tests/test-log.t Wed Jan 14 16:57:00 2015 -0800
+++ b/tests/test-log.t Wed Jan 14 17:21:09 2015 -0800
@@ -1842,3 +1842,62 @@
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: 1
|
+ $ cd ..
+
+Check proper report when the manifest changes but not the file issue4499
+------------------------------------------------------------------------
+
+ $ hg init issue4499
+ $ cd issue4499
+ $ for f in A B C D F E G H I J K L M N O P Q R S T U; do
+ > echo 1 > $f;
+ > hg add $f;
+ > done
+ $ hg commit -m 'A1B1C1'
+ $ echo 2 > A
+ $ echo 2 > B
+ $ echo 2 > C
+ $ hg commit -m 'A2B2C2'
+ $ hg up 0
+ 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ echo 3 > A
+ $ echo 2 > B
+ $ echo 2 > C
+ $ hg commit -m 'A3B2C2'
+ created new head
+
+ $ hg log -G
+ @ changeset: 2:fe5fc3d0eb17
+ | tag: tip
+ | parent: 0:abf4f0e38563
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: A3B2C2
+ |
+ | o changeset: 1:07dcc6b312c0
+ |/ user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: A2B2C2
+ |
+ o changeset: 0:abf4f0e38563
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: A1B1C1
+
+
+Log -f on B should reports current changesets
+
+ $ hg log -fG B
+ @ changeset: 2:fe5fc3d0eb17
+ | tag: tip
+ | parent: 0:abf4f0e38563
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: A3B2C2
+ |
+ o changeset: 0:abf4f0e38563
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: A1B1C1
+
+ $ cd ..