mercurial/changelog.py
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
Mon, 29 Aug 2005 20:37:07 +0200
changeset 1152 ff560ce0c635
parent 1095 0a18374c0769
child 1195 f92af8d53330
permissions -rw-r--r--
bash_completion: small cleanup and bugfix _hg_count_non_option wasn't taking global options into account while counting non-option arguments. It also used only its first argument.

# changelog.py - changelog class 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 os, time
from revlog import *

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)