Show More
@@ -136,7 +136,7 b' class manifest(revlog):' | |||||
136 | text = "".join(self.addlist) |
|
136 | text = "".join(self.addlist) | |
137 |
|
137 | |||
138 | n = self.addrevision(text, transaction, link, p1, p2) |
|
138 | n = self.addrevision(text, transaction, link, p1, p2) | |
139 | self.mapcache = (n, map) |
|
139 | self.mapcache = (n, map, flags) | |
140 | self.listcache = (text, self.addlist) |
|
140 | self.listcache = (text, self.addlist) | |
141 | self.addlist = None |
|
141 | self.addlist = None | |
142 |
|
142 | |||
@@ -425,28 +425,34 b' class localrepository:' | |||||
425 | def rawcommit(self, files, text, user, date, p1=None, p2=None): |
|
425 | def rawcommit(self, files, text, user, date, p1=None, p2=None): | |
426 | p1 = p1 or self.dirstate.parents()[0] or nullid |
|
426 | p1 = p1 or self.dirstate.parents()[0] or nullid | |
427 | p2 = p2 or self.dirstate.parents()[1] or nullid |
|
427 | p2 = p2 or self.dirstate.parents()[1] or nullid | |
428 |
|
|
428 | c1 = self.changelog.read(p1) | |
429 |
|
|
429 | c2 = self.changelog.read(p2) | |
|
430 | m1 = self.manifest.read(c1[0]) | |||
|
431 | mf1 = self.manifest.readflags(c1[0]) | |||
|
432 | m2 = self.manifest.read(c2[0]) | |||
|
433 | ||||
430 | tr = self.transaction() |
|
434 | tr = self.transaction() | |
431 |
mm |
|
435 | mm = m1.copy() | |
|
436 | mfm = mf1.copy() | |||
432 | linkrev = self.changelog.count() |
|
437 | linkrev = self.changelog.count() | |
433 | for f in files: |
|
438 | for f in files: | |
434 | try: |
|
439 | try: | |
435 | t = file(f).read() |
|
440 | t = self.wfile(f).read() | |
|
441 | tm = is_exec(self.wjoin(f)) | |||
|
442 | r = self.file(f) | |||
|
443 | mfm[f] = tm | |||
|
444 | mm[f] = r.add(t, tr, linkrev, | |||
|
445 | m1.get(f, nullid), m2.get(f, nullid)) | |||
436 | except IOError: |
|
446 | except IOError: | |
437 | self.ui.warn("Read file %s error, skipped\n" % f) |
|
447 | del mm[f] | |
438 |
|
|
448 | del mfm[f] | |
439 | r = self.file(f) |
|
|||
440 | # FIXME - need to find both parents properly |
|
|||
441 | prev = pmmap.get(f, nullid) |
|
|||
442 | mmap[f] = r.add(t, tr, linkrev, prev) |
|
|||
443 |
|
449 | |||
444 |
mnode = self.manifest.add(mm |
|
450 | mnode = self.manifest.add(mm, mfm, tr, linkrev, c1[0], c2[0]) | |
445 |
n = self.changelog.add(mnode, files, text, tr, p1, p2, user |
|
451 | n = self.changelog.add(mnode, files, text, tr, p1, p2, user, date) | |
446 | tr.close() |
|
452 | tr.close() | |
447 | self.dirstate.setparents(p1, p2) |
|
453 | self.dirstate.setparents(p1, p2) | |
448 | self.dirstate.clear() |
|
454 | self.dirstate.clear() | |
449 |
self.dirstate.update( |
|
455 | self.dirstate.update(files, "n") | |
450 |
|
456 | |||
451 | def commit(self, files = None, text = ""): |
|
457 | def commit(self, files = None, text = ""): | |
452 | commit = [] |
|
458 | commit = [] | |
@@ -1065,14 +1071,19 b' class localrepository:' | |||||
1065 | def verify(self): |
|
1071 | def verify(self): | |
1066 | filelinkrevs = {} |
|
1072 | filelinkrevs = {} | |
1067 | filenodes = {} |
|
1073 | filenodes = {} | |
1068 | manifestchangeset = {} |
|
|||
1069 | changesets = revisions = files = 0 |
|
1074 | changesets = revisions = files = 0 | |
1070 | errors = 0 |
|
1075 | errors = 0 | |
1071 |
|
1076 | |||
|
1077 | seen = {} | |||
1072 | self.ui.status("checking changesets\n") |
|
1078 | self.ui.status("checking changesets\n") | |
1073 | for i in range(self.changelog.count()): |
|
1079 | for i in range(self.changelog.count()): | |
1074 | changesets += 1 |
|
1080 | changesets += 1 | |
1075 | n = self.changelog.node(i) |
|
1081 | n = self.changelog.node(i) | |
|
1082 | if n in seen: | |||
|
1083 | self.ui.warn("duplicate changeset at revision %d\n" % i) | |||
|
1084 | errors += 1 | |||
|
1085 | seen[n] = 1 | |||
|
1086 | ||||
1076 | for p in self.changelog.parents(n): |
|
1087 | for p in self.changelog.parents(n): | |
1077 | if p not in self.changelog.nodemap: |
|
1088 | if p not in self.changelog.nodemap: | |
1078 | self.ui.warn("changeset %s has unknown parent %s\n" % |
|
1089 | self.ui.warn("changeset %s has unknown parent %s\n" % | |
@@ -1084,24 +1095,23 b' class localrepository:' | |||||
1084 | self.ui.warn("unpacking changeset %s: %s\n" % (short(n), inst)) |
|
1095 | self.ui.warn("unpacking changeset %s: %s\n" % (short(n), inst)) | |
1085 | errors += 1 |
|
1096 | errors += 1 | |
1086 |
|
1097 | |||
1087 | manifestchangeset[changes[0]] = n |
|
|||
1088 | for f in changes[3]: |
|
1098 | for f in changes[3]: | |
1089 | filelinkrevs.setdefault(f, []).append(i) |
|
1099 | filelinkrevs.setdefault(f, []).append(i) | |
1090 |
|
1100 | |||
|
1101 | seen = {} | |||
1091 | self.ui.status("checking manifests\n") |
|
1102 | self.ui.status("checking manifests\n") | |
1092 | for i in range(self.manifest.count()): |
|
1103 | for i in range(self.manifest.count()): | |
1093 | n = self.manifest.node(i) |
|
1104 | n = self.manifest.node(i) | |
|
1105 | if n in seen: | |||
|
1106 | self.ui.warn("duplicate manifest at revision %d\n" % i) | |||
|
1107 | errors += 1 | |||
|
1108 | seen[n] = 1 | |||
|
1109 | ||||
1094 | for p in self.manifest.parents(n): |
|
1110 | for p in self.manifest.parents(n): | |
1095 | if p not in self.manifest.nodemap: |
|
1111 | if p not in self.manifest.nodemap: | |
1096 | self.ui.warn("manifest %s has unknown parent %s\n" % |
|
1112 | self.ui.warn("manifest %s has unknown parent %s\n" % | |
1097 | (short(n), short(p))) |
|
1113 | (short(n), short(p))) | |
1098 | errors += 1 |
|
1114 | errors += 1 | |
1099 | ca = self.changelog.node(self.manifest.linkrev(n)) |
|
|||
1100 | cc = manifestchangeset[n] |
|
|||
1101 | if ca != cc: |
|
|||
1102 | self.ui.warn("manifest %s points to %s, not %s\n" % |
|
|||
1103 | (hex(n), hex(ca), hex(cc))) |
|
|||
1104 | errors += 1 |
|
|||
1105 |
|
1115 | |||
1106 | try: |
|
1116 | try: | |
1107 | delta = mdiff.patchtext(self.manifest.delta(n)) |
|
1117 | delta = mdiff.patchtext(self.manifest.delta(n)) | |
@@ -1136,10 +1146,15 b' class localrepository:' | |||||
1136 | files += 1 |
|
1146 | files += 1 | |
1137 | fl = self.file(f) |
|
1147 | fl = self.file(f) | |
1138 | nodes = { nullid: 1 } |
|
1148 | nodes = { nullid: 1 } | |
|
1149 | seen = {} | |||
1139 | for i in range(fl.count()): |
|
1150 | for i in range(fl.count()): | |
1140 | revisions += 1 |
|
1151 | revisions += 1 | |
1141 | n = fl.node(i) |
|
1152 | n = fl.node(i) | |
1142 |
|
1153 | |||
|
1154 | if n in seen: | |||
|
1155 | self.ui.warn("%s: duplicate revision %d\n" % (f, i)) | |||
|
1156 | errors += 1 | |||
|
1157 | ||||
1143 | if n not in filenodes[f]: |
|
1158 | if n not in filenodes[f]: | |
1144 | self.ui.warn("%s: %d:%s not in manifests\n" |
|
1159 | self.ui.warn("%s: %d:%s not in manifests\n" | |
1145 | % (f, i, short(n))) |
|
1160 | % (f, i, short(n))) |
General Comments 0
You need to be logged in to leave comments.
Login now