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 |