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: