[PATCH 1 of 6] revset: fix a crash with 'wdir()~N'

Matt Harbison mharbison72 at gmail.com
Tue Jun 30 21:56:38 CDT 2015


# HG changeset patch
# User Matt Harbison <matt_harbison at yahoo.com>
# Date 1435711659 14400
#      Tue Jun 30 20:47:39 2015 -0400
# Node ID b912314a97b6f067c5bc4ee59c268489bfd0db11
# Parent  6fb443db15a1afbaafe973ad19d823c62ebc63f8
revset: fix a crash with 'wdir()~N'

The crash was "TypeError: expected string or Unicode object, NoneType found"
down in revlog.parentrevs().

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -474,7 +474,11 @@
     ps = set()
     cl = repo.changelog
     for r in getset(repo, fullreposet(repo), x):
-        for i in range(n):
+        dist = n
+        if r is None:
+            r = repo[r].parents()[0].rev()
+            dist -= 1
+        for i in range(dist):
             r = cl.parentrevs(r)[0]
         ps.add(r)
     return subset & ps
diff --git a/tests/test-merge-default.t b/tests/test-merge-default.t
--- a/tests/test-merge-default.t
+++ b/tests/test-merge-default.t
@@ -47,6 +47,18 @@
   $ hg merge 2
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
+  $ hg log -r 'wdir()~3'
+  changeset:   0:cb9a9f314b8b
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     a
+  
+  $ hg log -r '.~2'
+  changeset:   0:cb9a9f314b8b
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     a
+  
   $ hg commit -mm1
 
 Should succeed - 2 heads:


More information about the Mercurial-devel mailing list