diff mercurial/revset.py @ 32474:f064e2f72c49

revset: add support for "wdir()^n" This patch catches the WdirUnsupported exception raised, and adds support for wdir^n which will give us the nth parent of the working directory.
author Pulkit Goyal <7895pulkit@gmail.com>
date Mon, 22 May 2017 01:01:45 +0530
parents bb5dc19484b8
children 14482f8e6ce6
line wrap: on
line diff
--- a/mercurial/revset.py	Mon May 22 00:54:02 2017 +0530
+++ b/mercurial/revset.py	Mon May 22 01:01:45 2017 +0530
@@ -1502,11 +1502,19 @@
         if n == 0:
             ps.add(r)
         elif n == 1:
-            ps.add(cl.parentrevs(r)[0])
+            try:
+                ps.add(cl.parentrevs(r)[0])
+            except error.WdirUnsupported:
+                ps.add(repo[r].parents()[0].rev())
         elif n == 2:
-            parents = cl.parentrevs(r)
-            if parents[1] != node.nullrev:
-                ps.add(parents[1])
+            try:
+                parents = cl.parentrevs(r)
+                if parents[1] != node.nullrev:
+                    ps.add(parents[1])
+            except error.WdirUnsupported:
+                parents = repo[r].parents()
+                if len(parents) == 2:
+                    ps.add(parents[1].rev())
     return subset & ps
 
 @predicate('present(set)', safe=True)