Mercurial > hg
view mercurial/utils/repoviewutil.py @ 50393:f95ab2c53303
outgoing: fix common-heads computation from `missingroots` argument
When initializing a `outgoing` object, the `common set` can be defined explicitly (with the `commonheads` argument`) or implicitly (with the missingroots arguments).
It turns out the logic to compute `commonheads` from `missingroots` is buggy, as it does not consider the parents of enough changesets. Previously, it only considered parents of "missingroots` items, while it need to consider all parents of missing. Here is an example:
F
|\
C E
| |
B D
|/
A
If we use [E] as missing-roots, the missing set is [E, F], and the common-heads
are [C, D]. However you cannot only consider the parent of [E] to find them, as
[C] is not a parent of [E].
This already fix the bundle generated in one test, and it would prevent many
other to misbehave with future change from this series.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 10 Mar 2023 04:04:10 +0100 |
parents | 6000f5b25c9b |
children | 1a9bdd0e1c44 |
line wrap: on
line source
# repoviewutil.py - constaints data relevant to repoview.py and other module # # Copyright 2012 Pierre-Yves David <pierre-yves.david@ens-lyon.org> # Logilab SA <contact@logilab.fr> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. ### Nearest subset relation # Nearest subset of filter X is a filter Y so that: # * Y is included in X, # * X - Y is as small as possible. # This create and ordering used for branchmap purpose. # the ordering may be partial subsettable = { None: b'visible', b'visible-hidden': b'visible', b'visible': b'served', b'served.hidden': b'served', b'served': b'immutable', b'immutable': b'base', }