comparison mercurial/sparse.py @ 33375:df6dd6d536bb

sparse: clean up updateconfig() * Use context manager for wlock * Rename oldsparsematch to oldmatcher * Always call parseconfig() because parsing an empty string yields the same result as the old code
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 10 Jul 2017 21:43:19 -0700
parents 4dc04cdf2520
children d5a38eae67e5
comparison
equal deleted inserted replaced
33374:4dc04cdf2520 33375:df6dd6d536bb
590 590
591 Only one of the actions may be performed. 591 Only one of the actions may be performed.
592 592
593 The new config is written out and a working directory refresh is performed. 593 The new config is written out and a working directory refresh is performed.
594 """ 594 """
595 wlock = repo.wlock() 595 with repo.wlock():
596 try: 596 oldmatcher = matcher(repo)
597 oldsparsematch = matcher(repo)
598 597
599 raw = repo.vfs.tryread('sparse') 598 raw = repo.vfs.tryread('sparse')
600 if raw: 599 oldinclude, oldexclude, oldprofiles = parseconfig(repo.ui, raw)
601 oldinclude, oldexclude, oldprofiles = map( 600 oldprofiles = set(oldprofiles)
602 set, parseconfig(repo.ui, raw))
603 else:
604 oldinclude = set()
605 oldexclude = set()
606 oldprofiles = set()
607 601
608 try: 602 try:
609 if reset: 603 if reset:
610 newinclude = set() 604 newinclude = set()
611 newexclude = set() 605 newexclude = set()
635 629
636 writeconfig(repo, newinclude, newexclude, newprofiles) 630 writeconfig(repo, newinclude, newexclude, newprofiles)
637 631
638 fcounts = map( 632 fcounts = map(
639 len, 633 len,
640 refreshwdir(repo, oldstatus, oldsparsematch, force=force)) 634 refreshwdir(repo, oldstatus, oldmatcher, force=force))
641 635
642 profilecount = (len(newprofiles - oldprofiles) - 636 profilecount = (len(newprofiles - oldprofiles) -
643 len(oldprofiles - newprofiles)) 637 len(oldprofiles - newprofiles))
644 includecount = (len(newinclude - oldinclude) - 638 includecount = (len(newinclude - oldinclude) -
645 len(oldinclude - newinclude)) 639 len(oldinclude - newinclude))
648 printchanges(repo.ui, opts, profilecount, includecount, 642 printchanges(repo.ui, opts, profilecount, includecount,
649 excludecount, *fcounts) 643 excludecount, *fcounts)
650 except Exception: 644 except Exception:
651 writeconfig(repo, oldinclude, oldexclude, oldprofiles) 645 writeconfig(repo, oldinclude, oldexclude, oldprofiles)
652 raise 646 raise
653 finally:
654 wlock.release()
655 647
656 def printchanges(ui, opts, profilecount=0, includecount=0, excludecount=0, 648 def printchanges(ui, opts, profilecount=0, includecount=0, excludecount=0,
657 added=0, dropped=0, conflicting=0): 649 added=0, dropped=0, conflicting=0):
658 """Print output summarizing sparse config changes.""" 650 """Print output summarizing sparse config changes."""
659 with ui.formatter('sparse', opts) as fm: 651 with ui.formatter('sparse', opts) as fm: