41 if date: |
41 if date: |
42 # validate explicit (probably user-specified) date and |
42 # validate explicit (probably user-specified) date and |
43 # time zone offset. values must fit in signed 32 bits for |
43 # time zone offset. values must fit in signed 32 bits for |
44 # current 32-bit linux runtimes. timezones go from UTC-12 |
44 # current 32-bit linux runtimes. timezones go from UTC-12 |
45 # to UTC+14 |
45 # to UTC+14 |
46 try: |
46 when, offset = util.parsedate(date) |
47 when, offset = map(int, date.split(' ')) |
|
48 except ValueError: |
|
49 raise ValueError(_('invalid date: %r') % date) |
|
50 if abs(when) > 0x7fffffff: |
47 if abs(when) > 0x7fffffff: |
51 raise ValueError(_('date exceeds 32 bits: %d') % when) |
48 raise ValueError(_('date exceeds 32 bits: %d') % when) |
52 if offset < -50400 or offset > 43200: |
49 if offset < -50400 or offset > 43200: |
53 raise ValueError(_('impossible time zone offset: %d') % offset) |
50 raise ValueError(_('impossible time zone offset: %d') % offset) |
|
51 parseddate = "%d %d" % (when, offset) |
54 else: |
52 else: |
55 date = "%d %d" % util.makedate() |
53 parseddate = "%d %d" % util.makedate() |
56 list.sort() |
54 list.sort() |
57 l = [hex(manifest), user, date] + list + ["", desc] |
55 l = [hex(manifest), user, parseddate] + list + ["", desc] |
58 text = "\n".join(l) |
56 text = "\n".join(l) |
59 return self.addrevision(text, transaction, self.count(), p1, p2) |
57 return self.addrevision(text, transaction, self.count(), p1, p2) |