mercurial/hg.py
changeset 37 a8811676c85a
parent 33 98633e60067c
child 40 5f87633e1ea2
equal deleted inserted replaced
36:da28286bf6b7 37:a8811676c85a
     3 # Copyright 2005 Matt Mackall <mpm@selenic.com>
     3 # Copyright 2005 Matt Mackall <mpm@selenic.com>
     4 #
     4 #
     5 # This software may be used and distributed according to the terms
     5 # This software may be used and distributed according to the terms
     6 # of the GNU General Public License, incorporated herein by reference.
     6 # of the GNU General Public License, incorporated herein by reference.
     7 
     7 
     8 import sys, struct, sha, socket, os, time, base64, re, urllib2, binascii
     8 import sys, struct, sha, socket, os, time, base64, re, urllib2
     9 import urllib
     9 import urllib
    10 from mercurial import byterange
    10 from mercurial import byterange
    11 from mercurial.transaction import *
    11 from mercurial.transaction import *
    12 from mercurial.revlog import *
    12 from mercurial.revlog import *
    13 
       
    14 def hex(node): return binascii.hexlify(node)
       
    15 def bin(node): return binascii.unhexlify(node)
       
    16 
    13 
    17 class filelog(revlog):
    14 class filelog(revlog):
    18     def __init__(self, opener, path):
    15     def __init__(self, opener, path):
    19         s = self.encodepath(path)
    16         s = self.encodepath(path)
    20         revlog.__init__(self, opener, os.path.join("data", s + "i"),
    17         revlog.__init__(self, opener, os.path.join("data", s + "i"),
   110 class changelog(revlog):
   107 class changelog(revlog):
   111     def __init__(self, opener):
   108     def __init__(self, opener):
   112         revlog.__init__(self, opener, "00changelog.i", "00changelog.d")
   109         revlog.__init__(self, opener, "00changelog.i", "00changelog.d")
   113 
   110 
   114     def extract(self, text):
   111     def extract(self, text):
       
   112         if not text:
       
   113             return (nullid, "", 0, [], "")
   115         last = text.index("\n\n")
   114         last = text.index("\n\n")
   116         desc = text[last + 2:]
   115         desc = text[last + 2:]
   117         l = text[:last].splitlines()
   116         l = text[:last].splitlines()
   118         manifest = bin(l[0])
   117         manifest = bin(l[0])
   119         user = l[1]
   118         user = l[1]