mercurial/revset.py
changeset 25341 9d6cc87bd507
parent 25309 b333ca94403d
child 25342 5dde117269b6
--- a/mercurial/revset.py	Sun May 24 14:34:12 2015 +0900
+++ b/mercurial/revset.py	Sun May 24 14:49:41 2015 +0900
@@ -1920,9 +1920,18 @@
     s = getstring(x, "internal error")
     if not s:
         return baseset()
-    ls = [repo[r].rev() for r in s.split('\0')]
-    s = subset
-    return baseset([r for r in ls if r in s])
+    # remove duplicates here. it's difficult for caller to deduplicate sets
+    # because different symbols can point to the same rev.
+    ls = []
+    seen = set()
+    for t in s.split('\0'):
+        r = repo[t].rev()
+        if r in seen:
+            continue
+        if r in subset:
+            ls.append(r)
+        seen.add(r)
+    return baseset(ls)
 
 # for internal use
 def _intlist(repo, subset, x):