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