Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 20 Aug 2014 01:15:09 -0700] rev 22350
push: only push obsmarkers relevant to the "pushed subset"
We should only exchange obsolete markers related to the changesets
that are being exchanged. For example, if `A'` is a successor of `A`,
we do not want to push the marker if we are not exchanging
`A'`. Otherwise `A` would disappear without a successor, leading to confusion
for both users and the evolution mechanism.
Therefore we now exchange only the markers relevant to the subset of nodes
involved in the push (the nodes themselves may be already common but were
selected by --rev (or the lack of --rev)).
Note that all selected markers are still exchanged on each push. We do
not have a discovery protocol for markers in core yet. Such discovery
would save us the exchange of markers known on both side.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 20 Aug 2014 19:47:35 -0700] rev 22349
test-obsolete: sort the output of debugobsolete
The set of relevant markers is currently unordered. Therefore the
markers will be added in arbitrary order. We sort the list of markers
beforehand to ensure stable output for testing.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 20 Aug 2014 19:42:33 -0700] rev 22348
test-obsolete: change a marker so it is relevant to the exchanged set
We are going to only exchange markers relevant to the exchanged
changesets. So we need to change this marker to use a known changeset as
a successor instead of a precursor.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 19:44:27 +0200] rev 22347
push: use bundle2 to push obsmarkers when possible
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 19:32:51 +0200] rev 22346
exchange: add a `buildobsmarkerpart` function
We'll have to build an obsmarker part for both push and pull. So we build a
function to factor out the common part.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 26 Aug 2014 11:36:23 +0200] rev 22345
obsolete: add a `commonversion` function
This function returns the highest common version between the locally known
formats and a list of remotely known formats. This is going to be useful to
know what format should be used for exchange.