Show More
@@ -977,7 +977,7 b' class revlog(object):' | |||
|
977 | 977 | tr.replace(self.indexfile, trindex * calc) |
|
978 | 978 | self._io.chunkcache = None |
|
979 | 979 | |
|
980 |
def addrevision(self, text, transaction, link, p1 |
|
|
980 | def addrevision(self, text, transaction, link, p1, p2, d=None): | |
|
981 | 981 | """add a revision to the log |
|
982 | 982 | |
|
983 | 983 | text - the revision data to add |
@@ -986,89 +986,67 b' class revlog(object):' | |||
|
986 | 986 | p1, p2 - the parent nodeids of the revision |
|
987 | 987 | d - an optional precomputed delta |
|
988 | 988 | """ |
|
989 | dfh = None | |
|
989 | 990 | if not self._inline(): |
|
990 | 991 | dfh = self.opener(self.datafile, "a") |
|
991 | else: | |
|
992 | dfh = None | |
|
993 | 992 | ifh = self.opener(self.indexfile, "a+") |
|
994 | 993 | return self._addrevision(text, transaction, link, p1, p2, d, ifh, dfh) |
|
995 | 994 | |
|
996 | 995 | def _addrevision(self, text, transaction, link, p1, p2, d, ifh, dfh): |
|
997 | if text is None: | |
|
998 | text = "" | |
|
999 | if p1 is None: | |
|
1000 | p1 = self.tip() | |
|
1001 | if p2 is None: | |
|
1002 | p2 = nullid | |
|
1003 | ||
|
1004 | 996 | node = hash(text, p1, p2) |
|
1005 | ||
|
1006 | 997 | if node in self.nodemap: |
|
1007 | 998 | return node |
|
1008 | 999 | |
|
1009 |
|
|
|
1010 |
|
|
|
1000 | curr = self.count() | |
|
1001 | prev = curr - 1 | |
|
1002 | base = self.base(prev) | |
|
1003 | offset = self.end(prev) | |
|
1011 | 1004 | |
|
1012 |
if |
|
|
1013 | base = self.base(t) | |
|
1014 | start = self.start(base) | |
|
1015 | end = self.end(t) | |
|
1005 | if curr: | |
|
1016 | 1006 | if not d: |
|
1017 |
p |
|
|
1018 |
d = self.diff(p |
|
|
1007 | ptext = self.revision(self.node(prev)) | |
|
1008 | d = self.diff(ptext, text) | |
|
1019 | 1009 | data = compress(d) |
|
1020 | 1010 | l = len(data[1]) + len(data[0]) |
|
1021 |
dist = |
|
|
1011 | dist = l + offset - self.start(base) | |
|
1022 | 1012 | |
|
1023 | 1013 | # full versions are inserted when the needed deltas |
|
1024 | 1014 | # become comparable to the uncompressed text |
|
1025 |
if not |
|
|
1015 | if not curr or dist > len(text) * 2: | |
|
1026 | 1016 | data = compress(text) |
|
1027 | 1017 | l = len(data[1]) + len(data[0]) |
|
1028 |
base = |
|
|
1029 | else: | |
|
1030 | base = self.base(t) | |
|
1031 | ||
|
1032 | offset = 0 | |
|
1033 | if t >= 0: | |
|
1034 | offset = self.end(t) | |
|
1018 | base = curr | |
|
1035 | 1019 | |
|
1036 | 1020 | e = (offset_type(offset, 0), l, len(text), |
|
1037 | 1021 | base, link, self.rev(p1), self.rev(p2), node) |
|
1038 | ||
|
1039 | 1022 | self.index.insert(-1, e) |
|
1040 |
self.nodemap[node] = |
|
|
1023 | self.nodemap[node] = curr | |
|
1041 | 1024 | |
|
1042 | 1025 | if self.version == REVLOGV0: |
|
1043 | 1026 | e = (offset, l, base, link, p1, p2, node) |
|
1044 | 1027 | entry = struct.pack(indexformatv0, *e) |
|
1045 | 1028 | else: |
|
1046 | 1029 | entry = struct.pack(indexformatng, *e) |
|
1030 | if not curr: | |
|
1031 | entry = struct.pack(versionformat, self.version) + entry[4:] | |
|
1047 | 1032 | |
|
1048 | 1033 | if not self._inline(): |
|
1049 | 1034 | transaction.add(self.datafile, offset) |
|
1050 |
transaction.add(self.indexfile, |
|
|
1035 | transaction.add(self.indexfile, curr * len(entry)) | |
|
1051 | 1036 | if data[0]: |
|
1052 | 1037 | dfh.write(data[0]) |
|
1053 | 1038 | dfh.write(data[1]) |
|
1054 | 1039 | dfh.flush() |
|
1040 | ifh.write(entry) | |
|
1055 | 1041 | else: |
|
1056 | 1042 | ifh.seek(0, 2) |
|
1057 |
transaction.add(self.indexfile, ifh.tell(), |
|
|
1058 | ||
|
1059 | if self.count() == 1 and self.version != REVLOGV0: | |
|
1060 | l = struct.pack(versionformat, self.version) | |
|
1061 | ifh.write(l) | |
|
1062 | entry = entry[4:] | |
|
1063 | ||
|
1043 | transaction.add(self.indexfile, ifh.tell(), prev) | |
|
1064 | 1044 | ifh.write(entry) |
|
1065 | ||
|
1066 | if self._inline(): | |
|
1067 | 1045 | ifh.write(data[0]) |
|
1068 | 1046 | ifh.write(data[1]) |
|
1069 | 1047 | self.checkinlinesize(transaction, ifh) |
|
1070 | 1048 | |
|
1071 |
self.cache = (node, |
|
|
1049 | self.cache = (node, curr, text) | |
|
1072 | 1050 | return node |
|
1073 | 1051 | |
|
1074 | 1052 | def ancestor(self, a, b): |
General Comments 0
You need to be logged in to leave comments.
Login now