mercurial/node.py
changeset 1089 142b5d5ec9cc
child 1091 d62130f99a73
equal deleted inserted replaced
1088:39b916b1d8e4 1089:142b5d5ec9cc
       
     1 """
       
     2 node.py - basic nodeid manipulation for mercurial
       
     3 
       
     4 Copyright 2005 Matt Mackall <mpm@selenic.com>
       
     5 
       
     6 This software may be used and distributed according to the terms
       
     7 of the GNU General Public License, incorporated herein by reference.
       
     8 """
       
     9 
       
    10 import sha, binascii
       
    11 
       
    12 nullid = "\0" * 20
       
    13 
       
    14 def hex(node):
       
    15     return binascii.hexlify(node)
       
    16 
       
    17 def bin(node):
       
    18     return binascii.unhexlify(node)
       
    19 
       
    20 def short(node):
       
    21     return hex(node[:6])
       
    22 
       
    23 def hash(text, p1, p2):
       
    24     """generate a hash from the given text and its parent hashes
       
    25 
       
    26     This hash combines both the current file contents and its history
       
    27     in a manner that makes it easy to distinguish nodes with the same
       
    28     content in the revision graph.
       
    29     """
       
    30     l = [p1, p2]
       
    31     l.sort()
       
    32     s = sha.new(l[0])
       
    33     s.update(l[1])
       
    34     s.update(text)
       
    35     return s.digest()
       
    36