view mercurial/node.py @ 25448:2bbfc2042d93

dirstate: avoid invalidating every entries when list is empty Default value was not tested with 'is None', this made empty list seen as default value and result the invalidation of every single entry in the dirstate. On repos with hundred of thousand of files, this results in minutes of lookup time instead nothing. This is a text book example of why we should test 'is None' if this is what we mean.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Thu, 04 Jun 2015 22:10:32 -0700
parents 25e572394f5c
children 1a5211f2f87f
line wrap: on
line source

# node.py - basic nodeid manipulation for mercurial
#
# Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.

import binascii

nullrev = -1
nullid = "\0" * 20

# This ugly style has a noticeable effect in manifest parsing
hex = binascii.hexlify
bin = binascii.unhexlify

def short(node):
    return hex(node[:6])