Mercurial > hg
view tests/test-sparse-clear.t @ 46089:8ff2d8359d0f
persistent-nodemap: properly ignore non-existent `.nd` data file
This code was meant to handle the case of a nodemap docket file
pointing to a nodemap data file that doesn’t exist (anymore),
but most likely caused an `UnboundLocalError` exception instead
when `data` was used on the next line without being defined.
This case is theoretically possible with a race condition
between two hg processes, but is hard to reproduce or test:
* Process A reads a docket file and finds a UID in it
that points to a given data file name.
* Process B decides that this same data file needs compacting.
It writes a new one with a different UID,
overwrites the docket file,
then removes the old data file.
* Only then process A tries to a open a file that doesn’t exist anymore.
Differential Revision: https://phab.mercurial-scm.org/D9533
author | Simon Sapin <simon-commits@exyr.org> |
---|---|
date | Mon, 07 Dec 2020 18:06:53 +0100 |
parents | 5c2a4f37eace |
children | a6efb9180764 |
line wrap: on
line source
test sparse $ hg init myrepo $ cd myrepo $ cat >> $HGRCPATH <<EOF > [extensions] > sparse= > purge= > strip= > rebase= > EOF $ echo a > index.html $ echo x > data.py $ echo z > readme.txt $ cat > base.sparse <<EOF > [include] > *.sparse > EOF $ hg ci -Aqm 'initial' $ cat > webpage.sparse <<EOF > %include base.sparse > [include] > *.html > EOF $ hg ci -Aqm 'initial' Clear rules when there are includes $ hg debugsparse --include *.py $ ls -A .hg data.py $ hg debugsparse --clear-rules $ ls -A .hg base.sparse data.py index.html readme.txt webpage.sparse Clear rules when there are excludes $ hg debugsparse --exclude *.sparse $ ls -A .hg data.py index.html readme.txt $ hg debugsparse --clear-rules $ ls -A .hg base.sparse data.py index.html readme.txt webpage.sparse Clearing rules should not alter profiles $ hg debugsparse --enable-profile webpage.sparse $ ls -A .hg base.sparse index.html webpage.sparse $ hg debugsparse --include *.py $ ls -A .hg base.sparse data.py index.html webpage.sparse $ hg debugsparse --clear-rules $ ls -A .hg base.sparse index.html webpage.sparse