##// END OF EJS Templates
copies: simplify merging of copy dicts on merge commits...
Martin von Zweigbergk -
r42719:907cef39 default
parent child Browse files
Show More
@@ -272,25 +272,19 b' def _changesetforwardcopies(a, b, match)'
272 heapq.heapify(work)
272 heapq.heapify(work)
273 alwaysmatch = match.always()
273 alwaysmatch = match.always()
274 while work:
274 while work:
275 r, i1, copies1 = heapq.heappop(work)
275 r, i1, copies = heapq.heappop(work)
276 if work and work[0][0] == r:
276 if work and work[0][0] == r:
277 # We are tracing copies from both parents
277 # We are tracing copies from both parents
278 r, i2, copies2 = heapq.heappop(work)
278 r, i2, copies2 = heapq.heappop(work)
279 copies = {}
279 for dst, src in copies2.items():
280 allcopies = set(copies1) | set(copies2)
281 for dst in allcopies:
282 # Unlike when copies are stored in the filelog, we consider
280 # Unlike when copies are stored in the filelog, we consider
283 # it a copy even if the destination already existed on the
281 # it a copy even if the destination already existed on the
284 # other branch. It's simply too expensive to check if the
282 # other branch. It's simply too expensive to check if the
285 # file existed in the manifest.
283 # file existed in the manifest.
286 if dst in copies1:
284 if dst not in copies:
287 # If it was copied on the p1 side, mark it as copied from
285 # If it was copied on the p1 side, leave it as copied from
288 # that side, even if it was also copied on the p2 side.
286 # that side, even if it was also copied on the p2 side.
289 copies[dst] = copies1[dst]
290 else:
291 copies[dst] = copies2[dst]
287 copies[dst] = copies2[dst]
292 else:
293 copies = copies1
294 if r == b.rev():
288 if r == b.rev():
295 _filter(a, b, copies)
289 _filter(a, b, copies)
296 return copies
290 return copies
General Comments 0
You need to be logged in to leave comments. Login now