mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
|
# hg.py - repository classes for mercurial
|
||
|
#
|
||
|
# Copyright 2005 Matt Mackall <mpm@selenic.com>
|
||
|
#
|
||
|
# This software may be used and distributed according to the terms
|
||
|
# of the GNU General Public License, incorporated herein by reference.
|
||
|
|
||
|
import sys, struct, os
|
||
|
import util
|
||
|
from revlog import *
|
||
|
from demandload import *
|
||
|
demandload(globals(), "time")
|
||
|
|
||
|
class changelog(revlog):
|
||
|
def __init__(self, opener):
|
||
|
revlog.__init__(self, opener, "00changelog.i", "00changelog.d")
|
||
|
|
||
|
def extract(self, text):
|
||
|
if not text:
|
||
|
return (nullid, "", "0", [], "")
|
||
|
last = text.index("\n\n")
|
||
|
desc = text[last + 2:]
|
||
|
l = text[:last].splitlines()
|
||
|
manifest = bin(l[0])
|
||
|
user = l[1]
|
||
|
date = l[2]
|
||
|
if " " not in date:
|
||
|
date += " 0" # some tools used -d without a timezone
|
||
|
files = l[3:]
|
||
|
return (manifest, user, date, files, desc)
|
||
|
|
||
|
def read(self, node):
|
||
|
return self.extract(self.revision(node))
|
||
|
|
||
|
def add(self, manifest, list, desc, transaction, p1=None, p2=None,
|
||
|
user=None, date=None):
|
||
|
if not date:
|
||
|
if time.daylight: offset = time.altzone
|
||
|
else: offset = time.timezone
|
||
|
date = "%d %d" % (time.time(), offset)
|
||
|
list.sort()
|
||
|
l = [hex(manifest), user, date] + list + ["", desc]
|
||
|
text = "\n".join(l)
|
||
|
return self.addrevision(text, transaction, self.count(), p1, p2)
|