[PATCH] clfilter: stronger detection of filtered changeset in changectx.__init__

Pierre-Yves David pierre-yves.david at ens-lyon.org
Tue Jan 15 22:26:28 CST 2013


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1358310071 -3600
# Node ID 58a0530087d99f06fdabd16590254cc305718dc2
# Parent  66cec3c2ee00abbcaa0813eb01f34f7123eb3b49
clfilter: stronger detection of filtered changeset in changectx.__init__

We previously let some IndexError spill out of this function.

A new tests is added to check the command that spotted the error.

diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -65,11 +65,11 @@ class changectx(object):
             if r < 0 or r >= l:
                 raise ValueError
             self._rev = r
             self._node = repo.changelog.node(r)
             return
-        except (ValueError, OverflowError):
+        except (ValueError, OverflowError, IndexError):
             pass
 
         if len(changeid) == 40:
             try:
                 self._node = bin(changeid)
diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t
--- a/tests/test-obsolete.t
+++ b/tests/test-obsolete.t
@@ -184,10 +184,27 @@ check that summary does not report them
   branch: default
   commit: (clean)
   update: 3 new changesets, 4 branch heads (merge)
   remote: 3 outgoing
 
+check that various commands work well with filtering
+
+  $ hg tip
+  changeset:   5:5601fb93a350
+  tag:         tip
+  parent:      1:7c3bad9141dc
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     add new_3_c
+  
+  $ hg log -r 6
+  abort: unknown revision '6'!
+  [255]
+  $ hg log -r 4
+  abort: unknown revision '4'!
+  [255]
+
 Check that public changeset are not accounted as obsolete:
 
   $ hg --hidden phase --public 2
   $ hg --config 'extensions.graphlog=' glog
   @  changeset:   5:5601fb93a350


More information about the Mercurial-devel mailing list