Mercurial > hg
view tests/test-sparse-profiles.t @ 49779:7d6c8943353a stable
hg: show the correct message when cloning an LFS repo with extension disabled
The `extensions._disabledpaths()` doesn't handle fetching help from `__index__`,
so it returns an empty dictionary of paths. That means None is always returned
from `extensions.disabled_help()` when embedding resources inside the pyoxidizer
or py2exe binary, regardless of the arg or if is an external extension stored in
the filesystem. And that means wrongly telling the user with an explicitly
disabled LFS extension that it will be enabled locally upon cloning from an LFS
remote. That causes test-lfs-serve.t:295 to fail.
This effectively reverts most of the rest of 843418dc0b1b, while keeping the
help text change in place (which was specifically identified as a problem).
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Mon, 05 Dec 2022 15:14:33 -0500 |
parents | 38941a28406a |
children |
line wrap: on
line source
test sparse $ hg init myrepo $ cd myrepo $ cat > .hg/hgrc <<EOF > [extensions] > sparse= > purge= > strip= > rebase= > EOF Config file without [section] is rejected $ cat > bad.sparse <<EOF > *.html > EOF $ hg debugsparse --import-rules bad.sparse abort: sparse config entry outside of section: *.html (add an [include] or [exclude] line to declare the entry type) [255] $ rm bad.sparse $ echo a > index.html $ echo x > data.py $ echo z > readme.txt $ cat > webpage.sparse <<EOF > # frontend sparse profile > [include] > *.html > EOF $ cat > backend.sparse <<EOF > # backend sparse profile > [include] > *.py > EOF $ hg ci -Aqm 'initial' $ hg debugsparse --include '*.sparse' Verify enabling a single profile works $ hg debugsparse --enable-profile webpage.sparse $ ls -A .hg backend.sparse index.html webpage.sparse Verify enabling two profiles works $ hg debugsparse --enable-profile backend.sparse $ ls -A .hg backend.sparse data.py index.html webpage.sparse Verify disabling a profile works $ hg debugsparse --disable-profile webpage.sparse $ ls -A .hg backend.sparse data.py webpage.sparse Verify that a profile is updated across multiple commits $ cat > webpage.sparse <<EOF > # frontend sparse profile > [include] > *.html > EOF $ cat > backend.sparse <<EOF > # backend sparse profile > [include] > *.py > *.txt > EOF $ echo foo >> data.py $ hg ci -m 'edit profile' $ ls -A .hg backend.sparse data.py readme.txt webpage.sparse $ hg up -q 0 $ ls -A .hg backend.sparse data.py webpage.sparse $ hg up -q 1 $ ls -A .hg backend.sparse data.py readme.txt webpage.sparse Introduce a conflicting .hgsparse change $ hg up -q 0 $ cat > backend.sparse <<EOF > # Different backend sparse profile > [include] > *.html > EOF $ echo bar >> data.py $ hg ci -qAm "edit profile other" $ ls -A .hg backend.sparse index.html webpage.sparse Verify conflicting merge pulls in the conflicting changes $ hg merge 1 temporarily included 2 file(s) in the sparse checkout for merging merging backend.sparse warning: conflicts while merging backend.sparse! (edit, then use 'hg resolve --mark') merging data.py warning: conflicts while merging data.py! (edit, then use 'hg resolve --mark') 0 files updated, 0 files merged, 0 files removed, 2 files unresolved use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon [1] $ rm *.orig $ ls -A .hg backend.sparse data.py index.html webpage.sparse Verify resolving the merge removes the temporarily unioned files $ cat > backend.sparse <<EOF > # backend sparse profile > [include] > *.html > *.txt > EOF $ hg resolve -m backend.sparse $ cat > data.py <<EOF > x > foo > bar > EOF $ hg resolve -m data.py (no more unresolved files) $ hg ci -qAm "merge profiles" $ ls -A .hg backend.sparse index.html readme.txt webpage.sparse $ hg cat -r . data.py x foo bar Verify stripping refreshes dirstate $ hg strip -q -r . $ ls -A .hg backend.sparse index.html webpage.sparse Verify rebase conflicts pulls in the conflicting changes $ hg up -q 1 $ ls -A .hg backend.sparse data.py readme.txt webpage.sparse $ hg rebase -d 2 rebasing 1:a2b1de640a62 "edit profile" temporarily included 2 file(s) in the sparse checkout for merging merging backend.sparse warning: conflicts while merging backend.sparse! (edit, then use 'hg resolve --mark') merging data.py warning: conflicts while merging data.py! (edit, then use 'hg resolve --mark') unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') [240] $ rm *.orig $ ls -A .hg backend.sparse data.py index.html webpage.sparse Verify resolving conflict removes the temporary files $ cat > backend.sparse <<EOF > [include] > *.html > *.txt > EOF $ hg resolve -m backend.sparse $ cat > data.py <<EOF > x > foo > bar > EOF $ hg resolve -m data.py (no more unresolved files) continue: hg rebase --continue $ hg rebase -q --continue $ ls -A .hg backend.sparse index.html readme.txt webpage.sparse $ hg cat -r . data.py x foo bar Test checking out a commit that does not contain the sparse profile. The warning message can be suppressed by setting missingwarning = false in [sparse] section of your config: $ hg debugsparse --reset $ hg rm *.sparse $ hg commit -m "delete profiles" $ hg up -q ".^" $ hg debugsparse --enable-profile backend.sparse $ ls -A .hg index.html readme.txt $ hg up tip | grep warning warning: sparse profile 'backend.sparse' not found in rev bfcb76de99cc - ignoring it [1] $ ls -A .hg data.py index.html readme.txt $ hg debugsparse --disable-profile backend.sparse | grep warning warning: sparse profile 'backend.sparse' not found in rev bfcb76de99cc - ignoring it [1] $ cat >> .hg/hgrc <<EOF > [sparse] > missingwarning = false > EOF $ hg debugsparse --enable-profile backend.sparse $ cd .. #if unix-permissions Test file permissions changing across a sparse profile change $ hg init sparseperm $ cd sparseperm $ cat > .hg/hgrc <<EOF > [extensions] > sparse= > EOF $ touch a b $ cat > .hgsparse <<EOF > [include] > a > EOF $ hg commit -Aqm 'initial' $ chmod a+x b $ hg commit -qm 'make executable' $ cat >> .hgsparse <<EOF > b > EOF $ hg commit -qm 'update profile' $ hg up -q 0 $ hg debugsparse --enable-profile .hgsparse $ hg up -q 2 $ ls -l b -rwxr-xr-x* b (glob) #endif