##// END OF EJS Templates
convert/hg: handle bogus copy records (issue1843)
Patrick Mezard -
r9532:989cb39d default
parent child Browse files
Show More
@@ -274,7 +274,7 b' class mercurial_source(converter_source)'
274 274 if self.ignoreerrors:
275 275 # calling getcopies() is a simple way to detect missing
276 276 # revlogs and populate self.ignored
277 self.getcopies(ctx, files)
277 self.getcopies(ctx, parents, files)
278 278 return [(f, rev) for f in files if f not in self.ignored], {}
279 279 if self._changescache and self._changescache[0] == rev:
280 280 m, a, r = self._changescache[1]
@@ -282,12 +282,12 b' class mercurial_source(converter_source)'
282 282 m, a, r = self.repo.status(parents[0].node(), ctx.node())[:3]
283 283 # getcopies() detects missing revlogs early, run it before
284 284 # filtering the changes.
285 copies = self.getcopies(ctx, m + a)
285 copies = self.getcopies(ctx, parents, m + a)
286 286 changes = [(name, rev) for name in m + a + r
287 287 if name not in self.ignored]
288 288 return sorted(changes), copies
289 289
290 def getcopies(self, ctx, files):
290 def getcopies(self, ctx, parents, files):
291 291 copies = {}
292 292 for name in files:
293 293 if name in self.ignored:
@@ -296,6 +296,14 b' class mercurial_source(converter_source)'
296 296 copysource, copynode = ctx.filectx(name).renamed()
297 297 if copysource in self.ignored or not self.keep(copynode):
298 298 continue
299 # Ignore copy sources not in parent revisions
300 found = False
301 for p in parents:
302 if copysource in p:
303 found = True
304 break
305 if not found:
306 continue
299 307 copies[name] = copysource
300 308 except TypeError:
301 309 pass
General Comments 0
You need to be logged in to leave comments. Login now