Mercurial > hg
annotate mercurial/node.py @ 21823:925d1bb9a971 stable
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@3816541e5485: no node!
[255]
Instead of:
$ hg tags
tiptag 2:3816541e5485
tip 2:3816541e5485
visible 0:193e9254ce7e
author | Angel Ezquerra <angel.ezquerra@gmail.com> |
---|---|
date | Sun, 29 Jun 2014 13:52:35 +0200 |
parents | 25e572394f5c |
children | 1a5211f2f87f |
rev | line source |
---|---|
8226
8b2cd04a6e97
put license and copyright info into comment blocks
Martin Geisler <mg@lazybytes.net>
parents:
8225
diff
changeset
|
1 # node.py - basic nodeid manipulation for mercurial |
8b2cd04a6e97
put license and copyright info into comment blocks
Martin Geisler <mg@lazybytes.net>
parents:
8225
diff
changeset
|
2 # |
8b2cd04a6e97
put license and copyright info into comment blocks
Martin Geisler <mg@lazybytes.net>
parents:
8225
diff
changeset
|
3 # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com> |
8b2cd04a6e97
put license and copyright info into comment blocks
Martin Geisler <mg@lazybytes.net>
parents:
8225
diff
changeset
|
4 # |
8b2cd04a6e97
put license and copyright info into comment blocks
Martin Geisler <mg@lazybytes.net>
parents:
8225
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
10263 | 6 # GNU General Public License version 2 or any later version. |
1089 | 7 |
3877
abaee83ce0a6
Replace demandload with new demandimport
Matt Mackall <mpm@selenic.com>
parents:
3578
diff
changeset
|
8 import binascii |
1089 | 9 |
3578
3b4e00cba57a
Define and use nullrev (revision of nullid) instead of -1.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
2859
diff
changeset
|
10 nullrev = -1 |
1089 | 11 nullid = "\0" * 20 |
12 | |
4995
e45fc5d03798
manifest: speed up creation of the manifestdict
Matt Mackall <mpm@selenic.com>
parents:
3877
diff
changeset
|
13 # This ugly style has a noticeable effect in manifest parsing |
e45fc5d03798
manifest: speed up creation of the manifestdict
Matt Mackall <mpm@selenic.com>
parents:
3877
diff
changeset
|
14 hex = binascii.hexlify |
e45fc5d03798
manifest: speed up creation of the manifestdict
Matt Mackall <mpm@selenic.com>
parents:
3877
diff
changeset
|
15 bin = binascii.unhexlify |
1089 | 16 |
17 def short(node): | |
18 return hex(node[:6]) |