Mercurial > hg
diff mercurial/changelog.py @ 1089:142b5d5ec9cc
Break apart hg.py
- move the various parts of hg.py into their own files
- create node.py to store node manipulation functions
author | mpm@selenic.com |
---|---|
date | Sat, 27 Aug 2005 14:21:25 -0700 |
parents | mercurial/hg.py@05dc7aba22eb |
children | 0a18374c0769 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/changelog.py Sat Aug 27 14:21:25 2005 -0700 @@ -0,0 +1,44 @@ +# 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)