From patchwork Wed May 4 02:06:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D12600: Enforce narrowacl in narrow_widen From: phabricator X-Patchwork-Id: 50950 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Wed, 4 May 2022 02:06:06 +0000 idlsoft created this revision. Herald added a reviewer: durin42. Herald added a reviewer: martinvonz. Herald added a reviewer: hg-reviewers. Herald added a subscriber: mercurial-patches. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D12600 AFFECTED FILES hgext/narrow/narrowwirepeer.py tests/test-narrow-acl.t CHANGE DETAILS To: idlsoft, durin42, martinvonz, #hg-reviewers Cc: mercurial-patches, mercurial-devel diff --git a/tests/test-narrow-acl.t b/tests/test-narrow-acl.t --- a/tests/test-narrow-acl.t +++ b/tests/test-narrow-acl.t @@ -41,3 +41,39 @@ $ hg -R narrowclone1 tracked I path:f1 I path:f2 + +Narrow should not be able to widen to include f3 + $ hg -R narrowclone1 tracked --addinclude f3 + comparing with http://localhost:$HGPORT1/ + searching for changes + abort: The following includes are not accessible for test: ['path:f3'] + [255] + $ ls -A -1 narrowclone1 | sort + .hg + f1 + f2 + $ hg -R narrowclone1 tracked + I path:f1 + I path:f2 + +Narrow should allow widen to include f2 + $ hg -R narrowclone1 tracked --removeinclude f2 > /dev/null + $ hg -R narrowclone1 tracked + I path:f1 + $ ls -A -1 narrowclone1 | sort + .hg + f1 + $ hg -R narrowclone1 tracked --addinclude f2 + comparing with http://localhost:$HGPORT1/ + searching for changes + adding changesets + adding manifests + adding file changes + added 0 changesets with 1 changes to 1 files + $ hg -R narrowclone1 tracked + I path:f1 + I path:f2 + $ ls -A -1 narrowclone1 | sort + .hg + f1 + f2 diff --git a/hgext/narrow/narrowwirepeer.py b/hgext/narrow/narrowwirepeer.py --- a/hgext/narrow/narrowwirepeer.py +++ b/hgext/narrow/narrowwirepeer.py @@ -9,6 +9,7 @@ from mercurial import ( bundle2, error, + exchange, extensions, hg, narrowspec, @@ -85,6 +86,11 @@ newincludes = splitpaths(newincludes) oldexcludes = splitpaths(oldexcludes) newexcludes = splitpaths(newexcludes) + + # enforce narrow acl if set + if repo.ui.has_section(exchange._NARROWACL_SECTION): + exchange.applynarrowacl(repo, dict(includepats=newincludes)) + # validate the patterns narrowspec.validatepatterns(set(oldincludes)) narrowspec.validatepatterns(set(newincludes))