2545 ui.warn(_('skipping ancestor revision %s\n') % ctx.rev()) |
2545 ui.warn(_('skipping ancestor revision %s\n') % ctx.rev()) |
2546 revs.remove(ctx.rev()) |
2546 revs.remove(ctx.rev()) |
2547 if not revs: |
2547 if not revs: |
2548 return -1 |
2548 return -1 |
2549 |
2549 |
|
2550 # analyze revs for earlier grafts |
|
2551 ids = {} |
|
2552 for ctx in repo.set("%ld", revs): |
|
2553 ids[ctx.hex()] = ctx.rev() |
|
2554 n = ctx.extra().get('source') |
|
2555 if n: |
|
2556 ids[n] = ctx.rev() |
|
2557 |
2550 # check ancestors for earlier grafts |
2558 # check ancestors for earlier grafts |
2551 ui.debug('scanning for duplicate grafts\n') |
2559 ui.debug('scanning for duplicate grafts\n') |
2552 for ctx in repo.set("::. - ::%ld", revs): |
2560 for ctx in repo.set("::. - ::%ld", revs): |
2553 n = ctx.extra().get('source') |
2561 n = ctx.extra().get('source') |
2554 if n and n in repo: |
2562 if n in ids: |
2555 r = repo[n].rev() |
2563 r = repo[n].rev() |
2556 if r in revs: |
2564 if r in revs: |
2557 ui.warn(_('skipping already grafted revision %s\n') % r) |
2565 ui.warn(_('skipping already grafted revision %s\n') % r) |
2558 revs.remove(r) |
2566 revs.remove(r) |
|
2567 elif ids[n] in revs: |
|
2568 ui.warn(_('skipping already grafted revision %s ' |
|
2569 '(same origin %d)\n') % (ids[n], r)) |
|
2570 revs.remove(ids[n]) |
|
2571 elif ctx.hex() in ids: |
|
2572 r = ids[ctx.hex()] |
|
2573 ui.warn(_('skipping already grafted revision %s ' |
|
2574 '(was grafted from %d)\n') % (r, ctx.rev())) |
|
2575 revs.remove(r) |
2559 if not revs: |
2576 if not revs: |
2560 return -1 |
2577 return -1 |
2561 |
2578 |
2562 for pos, ctx in enumerate(repo.set("%ld", revs)): |
2579 for pos, ctx in enumerate(repo.set("%ld", revs)): |
2563 current = repo['.'] |
2580 current = repo['.'] |