Mercurial > hg
changeset 20030:5931489b65e0
obsolete: do not accept duplicated marker during exchange
Before this patch, duplicated obsolescence markers could slip into an
obstore if the bookmark was unknown locally and duplicated in the
incoming obsolescence stream.
Existing duplicate markers will not be automatically removed but
they'll stop propagating. Having a few duplicated markers is harmless
and people have been warned evolution is <blink>experimental</blink>
anyway.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Sat, 16 Nov 2013 20:31:58 -0500 |
parents | 2e22f30e8437 |
children | 6c1adf2067bb |
files | mercurial/obsolete.py |
diffstat | 1 files changed, 5 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/obsolete.py Sun Nov 17 13:42:24 2013 -0500 +++ b/mercurial/obsolete.py Sat Nov 16 20:31:58 2013 -0500 @@ -268,7 +268,11 @@ if not _enabled: raise util.Abort('obsolete feature is not enabled on this repo') known = set(self._all) - new = [m for m in markers if m not in known] + new = [] + for m in markers: + if m not in known: + known.add(m) + new.append(m) if new: f = self.sopener('obsstore', 'ab') try: