comparison mercurial/node.py @ 30360:0298a07f64d9

dirstate: change placeholder hash length to 20 bytes Previously the new-node placeholder hash for manifests generated from the dirstate was a 21byte long string of "!" characters. Normal hashes are only 20 bytes long. This makes it complicated to implement more efficient manifest implementations which rely on the hashes being fixed length. Let's change this hash to just be 20 bytes long, and rely on the astronomical improbability of an actual hash being 20 "!" bytes in a row (just like we rely on no hash ever being the nullid). A future diff will do this for added and modified dirstate markers as well, so we're putting the new newnodeid in node.py so there's a common place for these placeholders.
author Durham Goode <durham@fb.com>
date Thu, 10 Nov 2016 02:17:22 -0800
parents a3f3fdac8433
children 1070df141718
comparison
equal deleted inserted replaced
30359:673f0fdc1046 30360:0298a07f64d9
15 15
16 nullrev = -1 16 nullrev = -1
17 nullid = b"\0" * 20 17 nullid = b"\0" * 20
18 nullhex = hex(nullid) 18 nullhex = hex(nullid)
19 19
20 # Phony node value to stand-in for new files in some uses of
21 # manifests.
22 newnodeid = '!' * 20
23
24 wdirnodes = set((newnodeid,))
25
20 # pseudo identifiers for working directory 26 # pseudo identifiers for working directory
21 # (they are experimental, so don't add too many dependencies on them) 27 # (they are experimental, so don't add too many dependencies on them)
22 wdirrev = 0x7fffffff 28 wdirrev = 0x7fffffff
23 wdirid = b"\xff" * 20 29 wdirid = b"\xff" * 20
24 30