comparison hgext/narrow/narrowcommands.py @ 46663:a4c19a162615

sshpeer: enable+fix warning about sshpeers not being closed explicitly I recommend looking at this with a diff that ignores indentation. The test changes are because localrepo.close() updates some cache, which appears happens earlier now on rollbacks or strips or something. The http changes are because httppeer.close() prints stats with --verbose. Differential Revision: https://phab.mercurial-scm.org/D9999
author Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
date Mon, 15 Feb 2021 14:48:36 -0500
parents 3c360ab2688d
children 6085b7f1536d
comparison
equal deleted inserted replaced
46662:db8037e38085 46663:a4c19a162615
593 remotepath = ui.expandpath(remotepath or b'default') 593 remotepath = ui.expandpath(remotepath or b'default')
594 url, branches = hg.parseurl(remotepath) 594 url, branches = hg.parseurl(remotepath)
595 ui.status(_(b'comparing with %s\n') % util.hidepassword(url)) 595 ui.status(_(b'comparing with %s\n') % util.hidepassword(url))
596 remote = hg.peer(repo, opts, url) 596 remote = hg.peer(repo, opts, url)
597 597
598 # check narrow support before doing anything if widening needs to be 598 try:
599 # performed. In future we should also abort if client is ellipses and 599 # check narrow support before doing anything if widening needs to be
600 # server does not support ellipses 600 # performed. In future we should also abort if client is ellipses and
601 if widening and wireprototypes.NARROWCAP not in remote.capabilities(): 601 # server does not support ellipses
602 raise error.Abort(_(b"server does not support narrow clones")) 602 if (
603 603 widening
604 commoninc = discovery.findcommonincoming(repo, remote) 604 and wireprototypes.NARROWCAP not in remote.capabilities()
605 605 ):
606 if autoremoveincludes: 606 raise error.Abort(_(b"server does not support narrow clones"))
607 outgoing = discovery.findcommonoutgoing( 607
608 repo, remote, commoninc=commoninc 608 commoninc = discovery.findcommonincoming(repo, remote)
609 ) 609
610 ui.status(_(b'looking for unused includes to remove\n')) 610 if autoremoveincludes:
611 localfiles = set() 611 outgoing = discovery.findcommonoutgoing(
612 for n in itertools.chain(outgoing.missing, outgoing.excluded): 612 repo, remote, commoninc=commoninc
613 localfiles.update(repo[n].files()) 613 )
614 suggestedremovals = [] 614 ui.status(_(b'looking for unused includes to remove\n'))
615 for include in sorted(oldincludes): 615 localfiles = set()
616 match = narrowspec.match(repo.root, [include], oldexcludes) 616 for n in itertools.chain(outgoing.missing, outgoing.excluded):
617 if not any(match(f) for f in localfiles): 617 localfiles.update(repo[n].files())
618 suggestedremovals.append(include) 618 suggestedremovals = []
619 if suggestedremovals: 619 for include in sorted(oldincludes):
620 for s in suggestedremovals: 620 match = narrowspec.match(repo.root, [include], oldexcludes)
621 ui.status(b'%s\n' % s) 621 if not any(match(f) for f in localfiles):
622 if ( 622 suggestedremovals.append(include)
623 ui.promptchoice( 623 if suggestedremovals:
624 _( 624 for s in suggestedremovals:
625 b'remove these unused includes (yn)?' 625 ui.status(b'%s\n' % s)
626 b'$$ &Yes $$ &No' 626 if (
627 ui.promptchoice(
628 _(
629 b'remove these unused includes (yn)?'
630 b'$$ &Yes $$ &No'
631 )
627 ) 632 )
628 ) 633 == 0
629 == 0 634 ):
630 ): 635 removedincludes.update(suggestedremovals)
631 removedincludes.update(suggestedremovals) 636 narrowing = True
632 narrowing = True 637 else:
633 else: 638 ui.status(_(b'found no unused includes\n'))
634 ui.status(_(b'found no unused includes\n')) 639
635 640 if narrowing:
636 if narrowing: 641 newincludes = oldincludes - removedincludes
637 newincludes = oldincludes - removedincludes 642 newexcludes = oldexcludes | addedexcludes
638 newexcludes = oldexcludes | addedexcludes 643 _narrow(
639 _narrow( 644 ui,
640 ui, 645 repo,
641 repo, 646 remote,
642 remote, 647 commoninc,
643 commoninc, 648 oldincludes,
644 oldincludes, 649 oldexcludes,
645 oldexcludes, 650 newincludes,
646 newincludes, 651 newexcludes,
647 newexcludes, 652 opts[b'force_delete_local_changes'],
648 opts[b'force_delete_local_changes'], 653 opts[b'backup'],
649 opts[b'backup'], 654 )
650 ) 655 # _narrow() updated the narrowspec and _widen() below needs to
651 # _narrow() updated the narrowspec and _widen() below needs to 656 # use the updated values as its base (otherwise removed includes
652 # use the updated values as its base (otherwise removed includes 657 # and addedexcludes will be lost in the resulting narrowspec)
653 # and addedexcludes will be lost in the resulting narrowspec) 658 oldincludes = newincludes
654 oldincludes = newincludes 659 oldexcludes = newexcludes
655 oldexcludes = newexcludes 660
656 661 if widening:
657 if widening: 662 newincludes = oldincludes | addedincludes
658 newincludes = oldincludes | addedincludes 663 newexcludes = oldexcludes - removedexcludes
659 newexcludes = oldexcludes - removedexcludes 664 _widen(
660 _widen( 665 ui,
661 ui, 666 repo,
662 repo, 667 remote,
663 remote, 668 commoninc,
664 commoninc, 669 oldincludes,
665 oldincludes, 670 oldexcludes,
666 oldexcludes, 671 newincludes,
667 newincludes, 672 newexcludes,
668 newexcludes, 673 )
669 ) 674 finally:
675 remote.close()
670 676
671 return 0 677 return 0