equal
deleted
inserted
replaced
3 # Copyright 2005 Matt Mackall <mpm@selenic.com> |
3 # Copyright 2005 Matt Mackall <mpm@selenic.com> |
4 # |
4 # |
5 # This software may be used and distributed according to the terms |
5 # This software may be used and distributed according to the terms |
6 # of the GNU General Public License, incorporated herein by reference. |
6 # of the GNU General Public License, incorporated herein by reference. |
7 |
7 |
8 import os, time |
|
9 from revlog import * |
8 from revlog import * |
|
9 from demandload import demandload |
|
10 demandload(globals(), "os time util") |
10 |
11 |
11 class changelog(revlog): |
12 class changelog(revlog): |
12 def __init__(self, opener): |
13 def __init__(self, opener): |
13 revlog.__init__(self, opener, "00changelog.i", "00changelog.d") |
14 revlog.__init__(self, opener, "00changelog.i", "00changelog.d") |
14 |
15 |
18 last = text.index("\n\n") |
19 last = text.index("\n\n") |
19 desc = text[last + 2:] |
20 desc = text[last + 2:] |
20 l = text[:last].splitlines() |
21 l = text[:last].splitlines() |
21 manifest = bin(l[0]) |
22 manifest = bin(l[0]) |
22 user = l[1] |
23 user = l[1] |
23 date = l[2] |
24 date = l[2].split(' ') |
24 if " " not in date: |
25 time = int(date.pop(0)) |
25 date += " 0" # some tools used -d without a timezone |
26 try: |
|
27 # various tools did silly things with the time zone field. |
|
28 timezone = int(date[0]) |
|
29 except: |
|
30 timezone = 0 |
26 files = l[3:] |
31 files = l[3:] |
27 return (manifest, user, date, files, desc) |
32 return (manifest, user, (time, timezone), files, desc) |
28 |
33 |
29 def read(self, node): |
34 def read(self, node): |
30 return self.extract(self.revision(node)) |
35 return self.extract(self.revision(node)) |
31 |
36 |
32 def add(self, manifest, list, desc, transaction, p1=None, p2=None, |
37 def add(self, manifest, list, desc, transaction, p1=None, p2=None, |
42 if abs(when) > 0x7fffffff: |
47 if abs(when) > 0x7fffffff: |
43 raise ValueError('date exceeds 32 bits: %d' % when) |
48 raise ValueError('date exceeds 32 bits: %d' % when) |
44 if abs(offset) >= 43200: |
49 if abs(offset) >= 43200: |
45 raise ValueError('impossible time zone offset: %d' % offset) |
50 raise ValueError('impossible time zone offset: %d' % offset) |
46 else: |
51 else: |
47 if time.daylight: offset = time.altzone |
52 date = "%d %d" % util.makedate() |
48 else: offset = time.timezone |
|
49 date = "%d %d" % (time.time(), offset) |
|
50 list.sort() |
53 list.sort() |
51 l = [hex(manifest), user, date] + list + ["", desc] |
54 l = [hex(manifest), user, date] + list + ["", desc] |
52 text = "\n".join(l) |
55 text = "\n".join(l) |
53 return self.addrevision(text, transaction, self.count(), p1, p2) |
56 return self.addrevision(text, transaction, self.count(), p1, p2) |