# HG changeset patch # User Pierre-Yves David # Date 1384651918 18000 # Node ID 5931489b65e096cb326b4c58e41e521101c9aed5 # Parent 2e22f30e843709738c19102a0516651edb7ab3b0 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 experimental anyway. diff -r 2e22f30e8437 -r 5931489b65e0 mercurial/obsolete.py --- 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: