mercurial/commands.py
branchstable
changeset 15508 00276525e2b7
parent 15506 dc9fb7015d7f
child 15511 6cae68a361ed
equal deleted inserted replaced
15507:7186b54b07c6 15508:00276525e2b7
  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['.']