changelog.py
48 lines
| 1.6 KiB
| text/x-python
|
PythonLexer
/ mercurial / changelog.py
mpm@selenic.com
|
r1095 | # changelog.py - changelog class for mercurial | ||
mpm@selenic.com
|
r1089 | # | ||
Vadim Gelfer
|
r2859 | # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com> | ||
mpm@selenic.com
|
r1089 | # | ||
# This software may be used and distributed according to the terms | ||||
# of the GNU General Public License, incorporated herein by reference. | ||||
from revlog import * | ||||
Benoit Boissinot
|
r1400 | from i18n import gettext as _ | ||
Bryan O'Sullivan
|
r1321 | from demandload import demandload | ||
demandload(globals(), "os time util") | ||||
mpm@selenic.com
|
r1089 | |||
class changelog(revlog): | ||||
Thomas Arendsen Hein
|
r2142 | def __init__(self, opener, defversion=REVLOGV0): | ||
mason@suse.com
|
r2072 | revlog.__init__(self, opener, "00changelog.i", "00changelog.d", | ||
defversion) | ||||
mpm@selenic.com
|
r1089 | |||
def extract(self, text): | ||||
if not text: | ||||
Matt Mackall
|
r1364 | return (nullid, "", (0, 0), [], "") | ||
mpm@selenic.com
|
r1089 | last = text.index("\n\n") | ||
desc = text[last + 2:] | ||||
l = text[:last].splitlines() | ||||
manifest = bin(l[0]) | ||||
user = l[1] | ||||
Bryan O'Sullivan
|
r1321 | date = l[2].split(' ') | ||
Bryan O'Sullivan
|
r1327 | time = float(date.pop(0)) | ||
Bryan O'Sullivan
|
r1321 | try: | ||
# various tools did silly things with the time zone field. | ||||
timezone = int(date[0]) | ||||
except: | ||||
timezone = 0 | ||||
mpm@selenic.com
|
r1089 | files = l[3:] | ||
Bryan O'Sullivan
|
r1321 | return (manifest, user, (time, timezone), files, desc) | ||
mpm@selenic.com
|
r1089 | |||
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): | ||||
Bryan O'Sullivan
|
r1195 | if date: | ||
Benoit Boissinot
|
r2523 | parseddate = "%d %d" % util.parsedate(date) | ||
Bryan O'Sullivan
|
r1195 | else: | ||
Jose M. Prieto
|
r2522 | parseddate = "%d %d" % util.makedate() | ||
mpm@selenic.com
|
r1089 | list.sort() | ||
Jose M. Prieto
|
r2522 | l = [hex(manifest), user, parseddate] + list + ["", desc] | ||
mpm@selenic.com
|
r1089 | text = "\n".join(l) | ||
return self.addrevision(text, transaction, self.count(), p1, p2) | ||||