From patchwork Wed Jan 16 04:26:28 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: clfilter: stronger detection of filtered changeset in changectx.__init__ From: Pierre-Yves David X-Patchwork-Id: 638 Message-Id: <58a0530087d99f06fdab.1358310388@yamac.lan> To: mercurial-devel@selenic.com Cc: pierre-yves.david@ens-lyon.org Date: Wed, 16 Jan 2013 05:26:28 +0100 # HG changeset patch # User Pierre-Yves David # 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