mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
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.
This commit is contained in:
parent
4accabb1fb
commit
dc490d9ff6
@ -49,7 +49,7 @@ def _adjustlinkrev(repo, path, filelog, fnode, srcrev, inclusive=False):
|
|||||||
if path in ac[3]: # checking the 'files' field.
|
if path in ac[3]: # checking the 'files' field.
|
||||||
# The file has been touched, check if the content is similar
|
# The file has been touched, check if the content is similar
|
||||||
# to the one we search for.
|
# to the one we search for.
|
||||||
if fnode == ma.readdelta(ac[0]).get(path):
|
if fnode == ma.readfast(ac[0]).get(path):
|
||||||
return a
|
return a
|
||||||
# In theory, we should never get out of that loop without a result. But
|
# 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
|
# if manifest uses a buggy file revision (not children of the one it
|
||||||
|
@ -1842,3 +1842,62 @@ Even when the file revision is missing from some head:
|
|||||||
| date: Thu Jan 01 00:00:00 1970 +0000
|
| date: Thu Jan 01 00:00:00 1970 +0000
|
||||||
| summary: 1
|
| 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 ..
|
||||||
|
Loading…
Reference in New Issue
Block a user