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)