##// END OF EJS Templates
Adapted behaviour of ui.username() to documentation and mention it explicitly:...
Adapted behaviour of ui.username() to documentation and mention it explicitly: Searched in this order: $HGUSER, [ui] section of hgrcs, $EMAIL and stop searching if one of these is set. Abort if found username is an empty string to force specifying the commit user elsewhere, e.g. with line option or repo hgrc. If not found, use $LOGNAME or $USERNAME +"@full.hostname".

File last commit:

r1678:b345cc4c default
r1985:c5776890 default
Show More
changelog.py
57 lines | 2.0 KiB | text/x-python | PythonLexer
mpm@selenic.com
changelog: adjust imports, comment
r1095 # changelog.py - changelog class for mercurial
mpm@selenic.com
Break apart hg.py...
r1089 #
# 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.
from revlog import *
Benoit Boissinot
i18n first part: make '_' available for files who need it
r1400 from i18n import gettext as _
Bryan O'Sullivan
Clean up date and timezone handling....
r1321 from demandload import demandload
demandload(globals(), "os time util")
mpm@selenic.com
Break apart hg.py...
r1089
class changelog(revlog):
def __init__(self, opener):
revlog.__init__(self, opener, "00changelog.i", "00changelog.d")
def extract(self, text):
if not text:
Matt Mackall
Fix data reported for the nullid changeset
r1364 return (nullid, "", (0, 0), [], "")
mpm@selenic.com
Break apart hg.py...
r1089 last = text.index("\n\n")
desc = text[last + 2:]
l = text[:last].splitlines()
manifest = bin(l[0])
user = l[1]
Bryan O'Sullivan
Clean up date and timezone handling....
r1321 date = l[2].split(' ')
Bryan O'Sullivan
Some repos represent a date as a float.
r1327 time = float(date.pop(0))
Bryan O'Sullivan
Clean up date and timezone handling....
r1321 try:
# various tools did silly things with the time zone field.
timezone = int(date[0])
except:
timezone = 0
mpm@selenic.com
Break apart hg.py...
r1089 files = l[3:]
Bryan O'Sullivan
Clean up date and timezone handling....
r1321 return (manifest, user, (time, timezone), files, desc)
mpm@selenic.com
Break apart hg.py...
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
Validate user input of dates when adding a changelog entry.
r1195 if date:
Bryan O'Sullivan
Make date/timezone validation in changelog.add more robust. Add test.
r1196 # validate explicit (probably user-specified) date and
Bryan O'Sullivan
Date validation must check for 32-bit width. Don't use assert to check.
r1197 # time zone offset. values must fit in signed 32 bits for
# current 32-bit linux runtimes.
Bryan O'Sullivan
Commit date validation: more stringent checks, more useful error messages.
r1202 try:
when, offset = map(int, date.split(' '))
except ValueError:
Benoit Boissinot
i18n part2: use '_' for all strings who are part of the user interface
r1402 raise ValueError(_('invalid date: %r') % date)
Bryan O'Sullivan
Date validation must check for 32-bit width. Don't use assert to check.
r1197 if abs(when) > 0x7fffffff:
Benoit Boissinot
i18n part2: use '_' for all strings who are part of the user interface
r1402 raise ValueError(_('date exceeds 32 bits: %d') % when)
Bryan O'Sullivan
Date validation must check for 32-bit width. Don't use assert to check.
r1197 if abs(offset) >= 43200:
Benoit Boissinot
i18n part2: use '_' for all strings who are part of the user interface
r1402 raise ValueError(_('impossible time zone offset: %d') % offset)
Bryan O'Sullivan
Validate user input of dates when adding a changelog entry.
r1195 else:
Bryan O'Sullivan
Clean up date and timezone handling....
r1321 date = "%d %d" % util.makedate()
mpm@selenic.com
Break apart hg.py...
r1089 list.sort()
l = [hex(manifest), user, date] + list + ["", desc]
text = "\n".join(l)
return self.addrevision(text, transaction, self.count(), p1, p2)