##// END OF EJS Templates
shelve: directly handle the initial parent alignment...
shelve: directly handle the initial parent alignment Shelve is currently sub-contracting some of its work to the rebase extension. In order to make shelve more independent and flexible we would like shelve to handle the parent alignment directly. After this change, we no longer need to use rebase in shelve. Differential Revision: https://phab.mercurial-scm.org/D3693

File last commit:

r33324:33d0859c default
r38637:c829749e default
Show More
test-sparse-import.t
181 lines | 3.6 KiB | text/troff | Tads3Lexer
/ tests / test-sparse-import.t
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 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'
Import a rules file against a 'blank' sparse profile
$ cat > $TESTTMP/rules_to_import <<EOF
> [include]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ ls
data.py
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --reset
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ rm .hg/sparse
$ cat > $TESTTMP/rules_to_import <<EOF
> %include base.sparse
> [include]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ ls
base.sparse
data.py
webpage.sparse
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --reset
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ rm .hg/sparse
Start against an existing profile; rules *already active* should be ignored
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --enable-profile webpage.sparse
$ hg debugsparse --include *.py
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ cat > $TESTTMP/rules_to_import <<EOF
> %include base.sparse
> [include]
> *.html
> *.txt
> [exclude]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ ls
base.sparse
index.html
readme.txt
webpage.sparse
$ cat .hg/sparse
%include webpage.sparse
[include]
*.py
*.txt
[exclude]
*.py
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --reset
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ rm .hg/sparse
Same tests, with -Tjson enabled to output summaries
$ cat > $TESTTMP/rules_to_import <<EOF
> [include]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import -Tjson
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 [
{
"exclude_rules_added": 0,
"files_added": 0,
"files_conflicting": 0,
"files_dropped": 4,
"include_rules_added": 1,
"profiles_added": 0
}
]
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --reset
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ rm .hg/sparse
$ cat > $TESTTMP/rules_to_import <<EOF
> %include base.sparse
> [include]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import -Tjson
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 [
{
"exclude_rules_added": 0,
"files_added": 0,
"files_conflicting": 0,
"files_dropped": 2,
"include_rules_added": 1,
"profiles_added": 1
}
]
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --reset
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ rm .hg/sparse
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --enable-profile webpage.sparse
$ hg debugsparse --include *.py
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ cat > $TESTTMP/rules_to_import <<EOF
> %include base.sparse
> [include]
> *.html
> *.txt
> [exclude]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import -Tjson
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 [
{
"exclude_rules_added": 1,
"files_added": 1,
"files_conflicting": 0,
"files_dropped": 1,
"include_rules_added": 1,
"profiles_added": 0
}
]
If importing results in no new rules being added, no refresh should take place!
$ cat > $TESTTMP/trap_sparse_refresh.py <<EOF
Gregory Szorc
sparse: move working directory refreshing into core...
r33324 > from mercurial import error, sparse
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 > def extsetup(ui):
Gregory Szorc
sparse: move working directory refreshing into core...
r33324 > def abort_refresh(*args, **kwargs):
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 > raise error.Abort('sparse._refresh called!')
Gregory Szorc
sparse: move working directory refreshing into core...
r33324 > sparse.refreshwdir = abort_refresh
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 > EOF
$ cat >> $HGRCPATH <<EOF
> [extensions]
> trap_sparse_refresh=$TESTTMP/trap_sparse_refresh.py
> EOF
$ cat > $TESTTMP/rules_to_import <<EOF
> [include]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289
If an exception is raised during refresh, restore the existing rules again.
$ cat > $TESTTMP/rules_to_import <<EOF
> [exclude]
> *.html
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 abort: sparse._refresh called!
[255]
$ cat .hg/sparse
%include webpage.sparse
[include]
*.py
*.txt
[exclude]
*.py