Details

incoming is not using the normal exchange logic and therefore doesn't
know how to tell with pullbundles. Fixing that is involved and it is
currently not sure if the current incoming code will survive, so apply a
band aid for now.

localrepo.__contains__ can be slow in tight loops because it has to resolve self.changelog. Also, localrepo.__getitem__ (which __contains__ calls) accepts a myriad of different values (integers, hex and binary hashes, etc). We want to user a lower-level API to perform lookups. I think localrepo.changelog.hasnode() is what we want. Please alias that to a local to avoid the localrepo.changelog property resolution in a loop.

+1 for this feature. But the warning message is a bit ambiguous to me. How about something like warning: server sent partial data; not all remote changesets are available. This still isn't great. But I'm struggling to find a way to better state the issue here.