Mercurial > hg > mercurial-source
changeset 23877:81349f4b47f4
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.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Wed, 14 Jan 2015 17:21:09 -0800 |
parents | 6c44cef5baa2 |
children | 9dd442148301 |
files | mercurial/context.py tests/test-log.t |
diffstat | 2 files changed, 60 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/context.py +++ b/mercurial/context.py @@ -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 +++ b/tests/test-log.t @@ -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 ..