Mercurial > public > mercurial-scm > hg-stable
view mercurial/changelog.py @ 1195:f92af8d53330
Validate user input of dates when adding a changelog entry.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Sat, 03 Sep 2005 23:08:39 -0700 |
parents | 0a18374c0769 |
children | 3738e85ead07 |
line wrap: on
line source
# 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 date: when, offset = map(int, date.split()) assert abs(offset) < 43200, 'bad time zone offset: %d' % offset else: 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)