1089
|
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
|