comparison mercurial/sparse.py @ 33376:d5a38eae67e5

sparse: shorten try..except block in updateconfig() It now only covers refreshwdir(). This is what importfromfiles() does. I think it is the more appropriate behavior.
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 10 Jul 2017 21:55:43 -0700
parents df6dd6d536bb
children 6f4e5e5940a5
comparison
equal deleted inserted replaced
33375:df6dd6d536bb 33376:d5a38eae67e5
597 597
598 raw = repo.vfs.tryread('sparse') 598 raw = repo.vfs.tryread('sparse')
599 oldinclude, oldexclude, oldprofiles = parseconfig(repo.ui, raw) 599 oldinclude, oldexclude, oldprofiles = parseconfig(repo.ui, raw)
600 oldprofiles = set(oldprofiles) 600 oldprofiles = set(oldprofiles)
601 601
602 if reset:
603 newinclude = set()
604 newexclude = set()
605 newprofiles = set()
606 else:
607 newinclude = set(oldinclude)
608 newexclude = set(oldexclude)
609 newprofiles = set(oldprofiles)
610
611 oldstatus = repo.status()
612
613 if any(pat.startswith('/') for pat in pats):
614 repo.ui.warn(_('warning: paths cannot start with /, ignoring: %s\n')
615 % ([pat for pat in pats if pat.startswith('/')]))
616 elif include:
617 newinclude.update(pats)
618 elif exclude:
619 newexclude.update(pats)
620 elif enableprofile:
621 newprofiles.update(pats)
622 elif disableprofile:
623 newprofiles.difference_update(pats)
624 elif delete:
625 newinclude.difference_update(pats)
626 newexclude.difference_update(pats)
627
628 profilecount = (len(newprofiles - oldprofiles) -
629 len(oldprofiles - newprofiles))
630 includecount = (len(newinclude - oldinclude) -
631 len(oldinclude - newinclude))
632 excludecount = (len(newexclude - oldexclude) -
633 len(oldexclude - newexclude))
634
635 # TODO clean up this writeconfig() + try..except pattern once we can.
636 # See comment in importfromfiles() explaining it.
637 writeconfig(repo, newinclude, newexclude, newprofiles)
638
602 try: 639 try:
603 if reset:
604 newinclude = set()
605 newexclude = set()
606 newprofiles = set()
607 else:
608 newinclude = set(oldinclude)
609 newexclude = set(oldexclude)
610 newprofiles = set(oldprofiles)
611
612 oldstatus = repo.status()
613
614 if any(pat.startswith('/') for pat in pats):
615 repo.ui.warn(_('warning: paths cannot start with /, '
616 'ignoring: %s\n') %
617 ([pat for pat in pats if pat.startswith('/')]))
618 elif include:
619 newinclude.update(pats)
620 elif exclude:
621 newexclude.update(pats)
622 elif enableprofile:
623 newprofiles.update(pats)
624 elif disableprofile:
625 newprofiles.difference_update(pats)
626 elif delete:
627 newinclude.difference_update(pats)
628 newexclude.difference_update(pats)
629
630 writeconfig(repo, newinclude, newexclude, newprofiles)
631
632 fcounts = map( 640 fcounts = map(
633 len, 641 len,
634 refreshwdir(repo, oldstatus, oldmatcher, force=force)) 642 refreshwdir(repo, oldstatus, oldmatcher, force=force))
635 643
636 profilecount = (len(newprofiles - oldprofiles) -
637 len(oldprofiles - newprofiles))
638 includecount = (len(newinclude - oldinclude) -
639 len(oldinclude - newinclude))
640 excludecount = (len(newexclude - oldexclude) -
641 len(oldexclude - newexclude))
642 printchanges(repo.ui, opts, profilecount, includecount, 644 printchanges(repo.ui, opts, profilecount, includecount,
643 excludecount, *fcounts) 645 excludecount, *fcounts)
644 except Exception: 646 except Exception:
645 writeconfig(repo, oldinclude, oldexclude, oldprofiles) 647 writeconfig(repo, oldinclude, oldexclude, oldprofiles)
646 raise 648 raise