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