Skip to content
  • Durham Goode's avatar
    dirstate: change added/modified placeholder hash length to 20 bytes · 1070df141718
    Durham Goode authored
    Previously the added/modified placeholder hash for manifests generated from the
    dirstate was a 21byte long string consisting of the p1 file hash plus a single
    character to indicate an add or a modify. 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 these 20 bytes (just like we rely on no
    hash every being the nullid).
    
    This changes the possible behavior slightly in that the hash for all
    added/modified entries in the dirstate manifest will now be the same (so simple
    node comparisons would say they are equal), but we should never be doing simple
    node comparisons on these nodes even with the old hashes, because they did not
    accurately represent the content (i.e. two files based off the same p1 file
    node, with different working copy contents would have the same hash (even with
    the appended character) in the old scheme too, so we couldn't depend on the
    hashes period).
    1070df141718