[PATCH STABLE V2] repoview: do not crash when localtags refers to non existing revisions

Angel Ezquerra angel.ezquerra at gmail.com
Mon Jun 30 17:56:28 CDT 2014


On Tue, Jul 1, 2014 at 12:53 AM, Angel Ezquerra
<angel.ezquerra at gmail.com> wrote:
> # HG changeset patch
> # User Angel Ezquerra <angel.ezquerra at gmail.com>
> # Date 1404042755 -7200
> #      Sun Jun 29 13:52:35 2014 +0200
> # Branch stable
> # Node ID 0f977cb11be3938e1da6c54389712f2070960917
> # Parent  a4b67bf1f0a5051736c14d9c13fae50fd5f5e464
> repoview: do not crash when localtags refers to non existing revisions
>
> This fixes a crash that may happen when using mercurial 3.0.x.
>
> The _gethiddenblockers function assumed that the output of tags.readlocaltags()
> was a dict mapping tags to of valid nodes. However this was not necessarily the
> case. When a repository had obsolete revisions and had local tag pointing to a
> non existing revision was found, many mercurial commands would crash.
>
> This revision fixes the problem by removing any tags from the output of
> tags.readlocaltags() which point to invalid nodes.
>
> We may want to add a warning when this happens (although it might be
> annoying to get that warning for every command, possibly even more than once per
> command).
>
> A test for this problem has been added to test-obsolete.t. Without this fix the
> test would output:
>
>   $ hg tags
>   abort: 00changelog.i at 3816541e5485: no node!
>   [255]
>
> Instead of:
>
>   $ hg tags
>   tiptag                             2:3816541e5485
>   tip                                2:3816541e5485
>   visible                            0:193e9254ce7e

Note that this fixes an issue that happened in
repoview._gethiddenblockers(), but the fix has been done in tags.py.
Thus I don't know if the revision subject should say repoview or tags.

Cheers,

Angel


More information about the Mercurial-devel mailing list