equal
deleted
inserted
replaced
702 ) |
702 ) |
703 |
703 |
704 |
704 |
705 def updateconfig( |
705 def updateconfig( |
706 repo, |
706 repo, |
707 pats, |
|
708 opts, |
707 opts, |
709 include=False, |
708 include=(), |
710 exclude=False, |
709 exclude=(), |
711 reset=False, |
710 reset=False, |
712 delete=False, |
711 delete=(), |
713 enableprofile=False, |
712 enableprofile=(), |
714 disableprofile=False, |
713 disableprofile=(), |
715 force=False, |
714 force=False, |
716 usereporootpaths=False, |
715 usereporootpaths=False, |
717 ): |
716 ): |
718 """Perform a sparse config update. |
717 """Perform a sparse config update. |
719 |
|
720 Only one of the actions may be performed. |
|
721 |
718 |
722 The new config is written out and a working directory refresh is performed. |
719 The new config is written out and a working directory refresh is performed. |
723 """ |
720 """ |
724 with repo.wlock(), repo.lock(), repo.dirstate.parentchange(): |
721 with repo.wlock(), repo.lock(), repo.dirstate.parentchange(): |
725 raw = repo.vfs.tryread(b'sparse') |
722 raw = repo.vfs.tryread(b'sparse') |
734 else: |
731 else: |
735 newinclude = set(oldinclude) |
732 newinclude = set(oldinclude) |
736 newexclude = set(oldexclude) |
733 newexclude = set(oldexclude) |
737 newprofiles = set(oldprofiles) |
734 newprofiles = set(oldprofiles) |
738 |
735 |
739 if any(os.path.isabs(pat) for pat in pats): |
736 def normalize_pats(pats): |
740 raise error.Abort(_(b'paths cannot be absolute')) |
737 if any(os.path.isabs(pat) for pat in pats): |
741 |
738 raise error.Abort(_(b'paths cannot be absolute')) |
742 if not usereporootpaths: |
739 |
|
740 if usereporootpaths: |
|
741 return pats |
|
742 |
743 # let's treat paths as relative to cwd |
743 # let's treat paths as relative to cwd |
744 root, cwd = repo.root, repo.getcwd() |
744 root, cwd = repo.root, repo.getcwd() |
745 abspats = [] |
745 abspats = [] |
746 for kindpat in pats: |
746 for kindpat in pats: |
747 kind, pat = matchmod._patsplit(kindpat, None) |
747 kind, pat = matchmod._patsplit(kindpat, None) |
750 root, cwd, pat |
750 root, cwd, pat |
751 ) |
751 ) |
752 abspats.append(ap) |
752 abspats.append(ap) |
753 else: |
753 else: |
754 abspats.append(kindpat) |
754 abspats.append(kindpat) |
755 pats = abspats |
755 return abspats |
756 |
756 |
757 if include: |
757 include = normalize_pats(include) |
758 newinclude.update(pats) |
758 exclude = normalize_pats(exclude) |
759 elif exclude: |
759 delete = normalize_pats(delete) |
760 newexclude.update(pats) |
760 disableprofile = normalize_pats(disableprofile) |
761 elif enableprofile: |
761 enableprofile = normalize_pats(enableprofile) |
762 newprofiles.update(pats) |
762 |
763 elif disableprofile: |
763 newinclude.difference_update(delete) |
764 newprofiles.difference_update(pats) |
764 newexclude.difference_update(delete) |
765 elif delete: |
765 newprofiles.difference_update(disableprofile) |
766 newinclude.difference_update(pats) |
766 newinclude.update(include) |
767 newexclude.difference_update(pats) |
767 newprofiles.update(enableprofile) |
|
768 newexclude.update(exclude) |
768 |
769 |
769 profilecount = len(newprofiles - oldprofiles) - len( |
770 profilecount = len(newprofiles - oldprofiles) - len( |
770 oldprofiles - newprofiles |
771 oldprofiles - newprofiles |
771 ) |
772 ) |
772 includecount = len(newinclude - oldinclude) - len( |
773 includecount = len(newinclude - oldinclude) - len( |