# HG changeset patch # User Gregory Szorc # Date 1498930167 25200 # Node ID c9cbf4de27ba3088f89433383f8aa093392a1e37 # Parent 1e9fd2c35ae36078dc60fd5282689b7949ab6fda sparse: rename command to debugsparse Sparse checkout is still highly experimental and not protected by BC guarantees yet. We also haven't had a discussion on the UX. To discourage use, we rename the sparse command to debugsparse. diff -r 1e9fd2c35ae3 -r c9cbf4de27ba hgext/sparse.py --- a/hgext/sparse.py Thu Jul 06 10:54:23 2017 -0700 +++ b/hgext/sparse.py Sat Jul 01 10:29:27 2017 -0700 @@ -335,7 +335,7 @@ # Prevent adding files that are outside the sparse checkout editfuncs = ['normal', 'add', 'normallookup', 'copy', 'remove', 'merge'] - hint = _('include file with `hg sparse --include ` or use ' + + hint = _('include file with `hg debugsparse --include ` or use ' + '`hg add -s ` to include file directory while adding') for func in editfuncs: def _wrapper(orig, self, *args): @@ -622,7 +622,7 @@ repo.signaturecache = {} repo.__class__ = SparseRepo -@command('^sparse', [ +@command('^debugsparse', [ ('I', 'include', False, _('include files in the sparse checkout')), ('X', 'exclude', False, _('exclude files in the sparse checkout')), ('d', 'delete', False, _('delete an include/exclude rule')), @@ -635,7 +635,7 @@ ('', 'reset', False, _('makes the repo full again')), ] + commands.templateopts, _('[--OPTION] PATTERN...')) -def sparse(ui, repo, *pats, **opts): +def debugsparse(ui, repo, *pats, **opts): """make the current checkout sparse, or edit the existing checkout The sparse command is used to make the current checkout sparse. diff -r 1e9fd2c35ae3 -r c9cbf4de27ba tests/test-sparse-clear.t --- a/tests/test-sparse-clear.t Thu Jul 06 10:54:23 2017 -0700 +++ b/tests/test-sparse-clear.t Sat Jul 01 10:29:27 2017 -0700 @@ -27,10 +27,10 @@ Clear rules when there are includes - $ hg sparse --include *.py + $ hg debugsparse --include *.py $ ls data.py - $ hg sparse --clear-rules + $ hg debugsparse --clear-rules $ ls base.sparse data.py @@ -40,12 +40,12 @@ Clear rules when there are excludes - $ hg sparse --exclude *.sparse + $ hg debugsparse --exclude *.sparse $ ls data.py index.html readme.txt - $ hg sparse --clear-rules + $ hg debugsparse --clear-rules $ ls base.sparse data.py @@ -55,18 +55,18 @@ Clearing rules should not alter profiles - $ hg sparse --enable-profile webpage.sparse + $ hg debugsparse --enable-profile webpage.sparse $ ls base.sparse index.html webpage.sparse - $ hg sparse --include *.py + $ hg debugsparse --include *.py $ ls base.sparse data.py index.html webpage.sparse - $ hg sparse --clear-rules + $ hg debugsparse --clear-rules $ ls base.sparse index.html diff -r 1e9fd2c35ae3 -r c9cbf4de27ba tests/test-sparse-import.t --- a/tests/test-sparse-import.t Thu Jul 06 10:54:23 2017 -0700 +++ b/tests/test-sparse-import.t Sat Jul 01 10:29:27 2017 -0700 @@ -31,11 +31,11 @@ > [include] > *.py > EOF - $ hg sparse --import-rules $TESTTMP/rules_to_import + $ hg debugsparse --import-rules $TESTTMP/rules_to_import $ ls data.py - $ hg sparse --reset + $ hg debugsparse --reset $ rm .hg/sparse $ cat > $TESTTMP/rules_to_import < [include] > *.py > EOF - $ hg sparse --import-rules $TESTTMP/rules_to_import + $ hg debugsparse --import-rules $TESTTMP/rules_to_import $ ls base.sparse data.py webpage.sparse - $ hg sparse --reset + $ hg debugsparse --reset $ rm .hg/sparse Start against an existing profile; rules *already active* should be ignored - $ hg sparse --enable-profile webpage.sparse - $ hg sparse --include *.py + $ hg debugsparse --enable-profile webpage.sparse + $ hg debugsparse --include *.py $ cat > $TESTTMP/rules_to_import < %include base.sparse > [include] @@ -64,7 +64,7 @@ > [exclude] > *.py > EOF - $ hg sparse --import-rules $TESTTMP/rules_to_import + $ hg debugsparse --import-rules $TESTTMP/rules_to_import $ ls base.sparse index.html @@ -78,7 +78,7 @@ [exclude] *.py - $ hg sparse --reset + $ hg debugsparse --reset $ rm .hg/sparse Same tests, with -Tjson enabled to output summaries @@ -87,7 +87,7 @@ > [include] > *.py > EOF - $ hg sparse --import-rules $TESTTMP/rules_to_import -Tjson + $ hg debugsparse --import-rules $TESTTMP/rules_to_import -Tjson [ { "exclude_rules_added": 0, @@ -99,7 +99,7 @@ } ] - $ hg sparse --reset + $ hg debugsparse --reset $ rm .hg/sparse $ cat > $TESTTMP/rules_to_import < [include] > *.py > EOF - $ hg sparse --import-rules $TESTTMP/rules_to_import -Tjson + $ hg debugsparse --import-rules $TESTTMP/rules_to_import -Tjson [ { "exclude_rules_added": 0, @@ -119,11 +119,11 @@ } ] - $ hg sparse --reset + $ hg debugsparse --reset $ rm .hg/sparse - $ hg sparse --enable-profile webpage.sparse - $ hg sparse --include *.py + $ hg debugsparse --enable-profile webpage.sparse + $ hg debugsparse --include *.py $ cat > $TESTTMP/rules_to_import < %include base.sparse > [include] @@ -132,7 +132,7 @@ > [exclude] > *.py > EOF - $ hg sparse --import-rules $TESTTMP/rules_to_import -Tjson + $ hg debugsparse --import-rules $TESTTMP/rules_to_import -Tjson [ { "exclude_rules_added": 1, @@ -166,7 +166,7 @@ > [include] > *.py > EOF - $ hg sparse --import-rules $TESTTMP/rules_to_import + $ hg debugsparse --import-rules $TESTTMP/rules_to_import If an exception is raised during refresh, restore the existing rules again. @@ -174,7 +174,7 @@ > [exclude] > *.html > EOF - $ hg sparse --import-rules $TESTTMP/rules_to_import + $ hg debugsparse --import-rules $TESTTMP/rules_to_import abort: sparse._refresh called! [255] $ cat .hg/sparse diff -r 1e9fd2c35ae3 -r c9cbf4de27ba tests/test-sparse-merges.t --- a/tests/test-sparse-merges.t Thu Jul 06 10:54:23 2017 -0700 +++ b/tests/test-sparse-merges.t Sat Jul 01 10:29:27 2017 -0700 @@ -19,7 +19,7 @@ $ hg commit -m 'feature - bar2' $ hg update -q default - $ hg sparse --exclude 'bar**' + $ hg debugsparse --exclude 'bar**' $ hg merge feature temporarily included 1 file(s) in the sparse checkout for merging @@ -55,7 +55,7 @@ $ hg ci -Aqm 'add branchonly' $ hg up -q default - $ hg sparse -X branchonly + $ hg debugsparse -X branchonly $ hg merge feature temporarily included 2 file(s) in the sparse checkout for merging 2 files updated, 0 files merged, 0 files removed, 0 files unresolved diff -r 1e9fd2c35ae3 -r c9cbf4de27ba tests/test-sparse-profiles.t --- a/tests/test-sparse-profiles.t Thu Jul 06 10:54:23 2017 -0700 +++ b/tests/test-sparse-profiles.t Sat Jul 01 10:29:27 2017 -0700 @@ -25,11 +25,11 @@ > EOF $ hg ci -Aqm 'initial' - $ hg sparse --include '*.sparse' + $ hg debugsparse --include '*.sparse' Verify enabling a single profile works - $ hg sparse --enable-profile webpage.sparse + $ hg debugsparse --enable-profile webpage.sparse $ ls backend.sparse index.html @@ -37,7 +37,7 @@ Verify enabling two profiles works - $ hg sparse --enable-profile backend.sparse + $ hg debugsparse --enable-profile backend.sparse $ ls backend.sparse data.py @@ -46,7 +46,7 @@ Verify disabling a profile works - $ hg sparse --disable-profile webpage.sparse + $ hg debugsparse --disable-profile webpage.sparse $ ls backend.sparse data.py @@ -220,11 +220,11 @@ warning message can be suppressed by setting missingwarning = false in [sparse] section of your config: - $ hg sparse --reset + $ hg debugsparse --reset $ hg rm *.sparse $ hg commit -m "delete profiles" $ hg up -q ".^" - $ hg sparse --enable-profile backend.sparse + $ hg debugsparse --enable-profile backend.sparse $ ls index.html readme.txt @@ -235,14 +235,14 @@ data.py index.html readme.txt - $ hg sparse --disable-profile backend.sparse | grep warning + $ hg debugsparse --disable-profile backend.sparse | grep warning warning: sparse profile 'backend.sparse' not found in rev bfcb76de99cc - ignoring it [1] $ cat >> .hg/hgrc < [sparse] > missingwarning = false > EOF - $ hg sparse --enable-profile backend.sparse + $ hg debugsparse --enable-profile backend.sparse $ cd .. @@ -265,7 +265,7 @@ > EOF $ hg commit -qm 'update profile' $ hg up -q 0 - $ hg sparse --enable-profile .hgsparse + $ hg debugsparse --enable-profile .hgsparse $ hg up -q 2 $ ls -l b -rwxr-xr-x* b (glob) diff -r 1e9fd2c35ae3 -r c9cbf4de27ba tests/test-sparse-verbose-json.t --- a/tests/test-sparse-verbose-json.t Thu Jul 06 10:54:23 2017 -0700 +++ b/tests/test-sparse-verbose-json.t Sat Jul 01 10:29:27 2017 -0700 @@ -21,7 +21,7 @@ Verify basic --include and --reset $ hg up -q 0 - $ hg sparse --include 'hide' -Tjson + $ hg debugsparse --include 'hide' -Tjson [ { "exclude_rules_added": 0, @@ -32,14 +32,14 @@ "profiles_added": 0 } ] - $ hg sparse --clear-rules - $ hg sparse --include 'hide' --verbose + $ hg debugsparse --clear-rules + $ hg debugsparse --include 'hide' --verbose removing show Profile # change: 0 Include rule # change: 1 Exclude rule # change: 0 - $ hg sparse --reset -Tjson + $ hg debugsparse --reset -Tjson [ { "exclude_rules_added": 0, @@ -50,8 +50,8 @@ "profiles_added": 0 } ] - $ hg sparse --include 'hide' - $ hg sparse --reset --verbose + $ hg debugsparse --include 'hide' + $ hg debugsparse --reset --verbose getting show Profile # change: 0 Include rule # change: -1 @@ -59,9 +59,9 @@ Verifying that problematic files still allow us to see the deltas when forcing: - $ hg sparse --include 'show*' + $ hg debugsparse --include 'show*' $ touch hide - $ hg sparse --delete 'show*' --force -Tjson + $ hg debugsparse --delete 'show*' --force -Tjson pending changes to 'hide' [ { @@ -73,9 +73,9 @@ "profiles_added": 0 } ] - $ hg sparse --include 'show*' --force + $ hg debugsparse --include 'show*' --force pending changes to 'hide' - $ hg sparse --delete 'show*' --force --verbose + $ hg debugsparse --delete 'show*' --force --verbose pending changes to 'hide' Profile # change: 0 Include rule # change: -1 diff -r 1e9fd2c35ae3 -r c9cbf4de27ba tests/test-sparse.t --- a/tests/test-sparse.t Thu Jul 06 10:54:23 2017 -0700 +++ b/tests/test-sparse.t Sat Jul 01 10:29:27 2017 -0700 @@ -21,17 +21,17 @@ Verify basic --include $ hg up -q 0 - $ hg sparse --include 'hide' + $ hg debugsparse --include 'hide' $ ls hide Absolute paths outside the repo should just be rejected - $ hg sparse --include /foo/bar + $ hg debugsparse --include /foo/bar warning: paths cannot start with /, ignoring: ['/foo/bar'] - $ hg sparse --include '$TESTTMP/myrepo/hide' + $ hg debugsparse --include '$TESTTMP/myrepo/hide' - $ hg sparse --include '/root' + $ hg debugsparse --include '/root' warning: paths cannot start with /, ignoring: ['/root'] Verify commiting while sparse includes other files @@ -46,7 +46,7 @@ Verify --reset brings files back - $ hg sparse --reset + $ hg debugsparse --reset $ ls hide show @@ -55,12 +55,12 @@ $ cat show a -Verify 'hg sparse' default output +Verify 'hg debugsparse' default output $ hg up -q null - $ hg sparse --include 'show*' + $ hg debugsparse --include 'show*' - $ hg sparse + $ hg debugsparse [include] show* [exclude] @@ -89,19 +89,19 @@ $ hg add hide3 abort: cannot add 'hide3' - it is outside the sparse checkout - (include file with `hg sparse --include ` or use `hg add -s ` to include file directory while adding) + (include file with `hg debugsparse --include ` or use `hg add -s ` to include file directory while adding) [255] Verify deleting sparseness while a file has changes fails - $ hg sparse --delete 'show*' + $ hg debugsparse --delete 'show*' pending changes to 'hide' abort: cannot change sparseness due to pending changes (delete the files or use --force to bring them back dirty) [255] Verify deleting sparseness with --force brings back files - $ hg sparse --delete -f 'show*' + $ hg debugsparse --delete -f 'show*' pending changes to 'hide' $ ls hide @@ -116,14 +116,14 @@ Verify editing sparseness fails if pending changes - $ hg sparse --include 'show*' + $ hg debugsparse --include 'show*' pending changes to 'hide' abort: could not update sparseness due to pending changes [255] Verify adding sparseness hides files - $ hg sparse --exclude -f 'hide*' + $ hg debugsparse --exclude -f 'hide*' pending changes to 'hide' $ ls hide @@ -149,7 +149,7 @@ unresolved conflicts (see hg resolve, then hg rebase --continue) [1] - $ hg sparse + $ hg debugsparse [include] [exclude] @@ -186,7 +186,7 @@ 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon [1] - $ hg sparse + $ hg debugsparse [include] [exclude] @@ -198,7 +198,7 @@ $ hg up -C . cleaned up 1 temporarily added file(s) from the sparse checkout 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg sparse + $ hg debugsparse [include] [exclude] @@ -208,7 +208,7 @@ Verify strip -k resets dirstate correctly $ hg status - $ hg sparse + $ hg debugsparse [include] [exclude] @@ -246,15 +246,15 @@ $ mkdir -p dir1/dir2 $ touch dir1/dir2/file - $ hg sparse -I dir1/dir2 + $ hg debugsparse -I dir1/dir2 $ hg status ? dir1/dir2/file Test that add -s adds dirs to sparse profile - $ hg sparse --reset - $ hg sparse --include empty - $ hg sparse + $ hg debugsparse --reset + $ hg debugsparse --include empty + $ hg debugsparse [include] empty [exclude] @@ -266,13 +266,13 @@ $ touch add/bar $ hg add add/foo abort: cannot add 'add/foo' - it is outside the sparse checkout - (include file with `hg sparse --include ` or use `hg add -s ` to include file directory while adding) + (include file with `hg debugsparse --include ` or use `hg add -s ` to include file directory while adding) [255] $ hg add -s add/foo $ hg st A add/foo ? add/bar - $ hg sparse + $ hg debugsparse [include] add empty @@ -284,7 +284,7 @@ $ hg st A add/bar A add/foo - $ hg sparse + $ hg debugsparse [include] add empty @@ -316,7 +316,7 @@ $ hg add included excluded $ hg commit -m 'a commit' -q $ cp .hg/dirstate ../dirstateboth - $ hg sparse -X excluded + $ hg debugsparse -X excluded $ cp ../dirstateboth .hg/dirstate $ hg debugrebuilddirstate $ hg debugdirstate @@ -324,11 +324,11 @@ Test debugdirstate --minimal where file is in the parent manifest but not the dirstate - $ hg sparse -X included + $ hg debugsparse -X included $ hg debugdirstate $ cp .hg/dirstate ../dirstateallexcluded - $ hg sparse --reset - $ hg sparse -X excluded + $ hg debugsparse --reset + $ hg debugsparse -X excluded $ cp ../dirstateallexcluded .hg/dirstate $ touch includedadded $ hg add includedadded @@ -350,7 +350,7 @@ $ cp .hg/dirstate ../moreexcluded $ hg forget excludednomanifest $ rm excludednomanifest - $ hg sparse -X excludednomanifest + $ hg debugsparse -X excludednomanifest $ cp ../moreexcluded .hg/dirstate $ hg manifest excluded