diff --git a/mercurial/node.py b/mercurial/node.py new file mode 100644 --- /dev/null +++ b/mercurial/node.py @@ -0,0 +1,36 @@ +""" +node.py - basic nodeid manipulation for mercurial + +Copyright 2005 Matt Mackall + +This software may be used and distributed according to the terms +of the GNU General Public License, incorporated herein by reference. +""" + +import sha, binascii + +nullid = "\0" * 20 + +def hex(node): + return binascii.hexlify(node) + +def bin(node): + return binascii.unhexlify(node) + +def short(node): + return hex(node[:6]) + +def hash(text, p1, p2): + """generate a hash from the given text and its parent hashes + + This hash combines both the current file contents and its history + in a manner that makes it easy to distinguish nodes with the same + content in the revision graph. + """ + l = [p1, p2] + l.sort() + s = sha.new(l[0]) + s.update(l[1]) + s.update(text) + return s.digest() +