Show More
@@ -385,6 +385,21 b' class cg1packer(object):' | |||||
385 | yield chunk |
|
385 | yield chunk | |
386 | self._verbosenote(_('%8.i (changelog)\n') % size) |
|
386 | self._verbosenote(_('%8.i (changelog)\n') % size) | |
387 |
|
387 | |||
|
388 | # We need to make sure that the linkrev in the changegroup refers to | |||
|
389 | # the first changeset that introduced the manifest or file revision. | |||
|
390 | # The fastpath is usually safer than the slowpath, because the filelogs | |||
|
391 | # are walked in revlog order. | |||
|
392 | # | |||
|
393 | # When taking the slowpath with reorder=None and the manifest revlog | |||
|
394 | # uses generaldelta, the manifest may be walked in the "wrong" order. | |||
|
395 | # Without 'clrevorder', we would get an incorrect linkrev (see fix in | |||
|
396 | # cc0ff93d0c0c). | |||
|
397 | # | |||
|
398 | # When taking the fastpath, we are only vulnerable to reordering | |||
|
399 | # of the changelog itself. The changelog never uses generaldelta, so | |||
|
400 | # it is only reordered when reorder=True. To handle this case, we | |||
|
401 | # simply take the slowpath, which already has the 'clrevorder' logic. | |||
|
402 | # This was also fixed in cc0ff93d0c0c. | |||
388 | fastpathlinkrev = fastpathlinkrev and not self._reorder |
|
403 | fastpathlinkrev = fastpathlinkrev and not self._reorder | |
389 | # Callback for the manifest, used to collect linkrevs for filelog |
|
404 | # Callback for the manifest, used to collect linkrevs for filelog | |
390 | # revisions. |
|
405 | # revisions. |
General Comments 0
You need to be logged in to leave comments.
Login now