test-fileset.t
1037 lines
| 18.7 KiB
| text/troff
|
Tads3Lexer
/ tests / test-fileset.t
Patrick Mezard
|
r17362 | $ fileset() { | ||
Yuya Nishihara
|
r38629 | > hg debugfileset --all-files "$@" | ||
Patrick Mezard
|
r17362 | > } | ||
$ hg init repo | ||||
$ cd repo | ||||
$ echo a > a1 | ||||
$ echo a > a2 | ||||
$ echo b > b1 | ||||
Patrick Mezard
|
r17364 | $ echo b > b2 | ||
Patrick Mezard
|
r17362 | $ hg ci -Am addfiles | ||
adding a1 | ||||
adding a2 | ||||
adding b1 | ||||
Patrick Mezard
|
r17364 | adding b2 | ||
Patrick Mezard
|
r17362 | |||
Test operators and basic patterns | ||||
Yuya Nishihara
|
r25255 | $ fileset -v a1 | ||
Yuya Nishihara
|
r34075 | (symbol 'a1') | ||
Yuya Nishihara
|
r38838 | * matcher: | ||
Martin von Zweigbergk
|
r40818 | <patternmatcher patterns='a1$'> | ||
Patrick Mezard
|
r17362 | a1 | ||
Yuya Nishihara
|
r25255 | $ fileset -v 'a*' | ||
Yuya Nishihara
|
r34075 | (symbol 'a*') | ||
Yuya Nishihara
|
r38838 | * matcher: | ||
Martin von Zweigbergk
|
r40818 | <patternmatcher patterns='a[^/]*$'> | ||
Patrick Mezard
|
r17362 | a1 | ||
a2 | ||||
Yuya Nishihara
|
r25255 | $ fileset -v '"re:a\d"' | ||
Yuya Nishihara
|
r34075 | (string 're:a\\d') | ||
Yuya Nishihara
|
r38838 | * matcher: | ||
Martin von Zweigbergk
|
r40818 | <patternmatcher patterns='a\\d'> | ||
Patrick Mezard
|
r17362 | a1 | ||
a2 | ||||
Yuya Nishihara
|
r35759 | $ fileset -v '!re:"a\d"' | ||
(not | ||||
(kindpat | ||||
(symbol 're') | ||||
(string 'a\\d'))) | ||||
Yuya Nishihara
|
r38838 | * matcher: | ||
<predicatenmatcher | ||||
pred=<not | ||||
Martin von Zweigbergk
|
r40818 | <patternmatcher patterns='a\\d'>>> | ||
Yuya Nishihara
|
r35759 | b1 | ||
b2 | ||||
$ fileset -v 'path:a1 or glob:b?' | ||||
(or | ||||
(kindpat | ||||
(symbol 'path') | ||||
(symbol 'a1')) | ||||
(kindpat | ||||
(symbol 'glob') | ||||
(symbol 'b?'))) | ||||
Yuya Nishihara
|
r38838 | * matcher: | ||
r51285 | <patternmatcher patterns='b.$|a1(?:/|$)'> | |||
Yuya Nishihara
|
r35759 | a1 | ||
b1 | ||||
b2 | ||||
Yuya Nishihara
|
r38838 | $ fileset -v --no-show-matcher 'a1 or a2' | ||
Yuya Nishihara
|
r25255 | (or | ||
Yuya Nishihara
|
r34075 | (symbol 'a1') | ||
(symbol 'a2')) | ||||
Patrick Mezard
|
r17362 | a1 | ||
a2 | ||||
$ fileset 'a1 | a2' | ||||
a1 | ||||
a2 | ||||
$ fileset 'a* and "*1"' | ||||
a1 | ||||
$ fileset 'a* & "*1"' | ||||
a1 | ||||
$ fileset 'not (r"a*")' | ||||
b1 | ||||
Patrick Mezard
|
r17364 | b2 | ||
Patrick Mezard
|
r17362 | $ fileset '! ("a*")' | ||
b1 | ||||
Patrick Mezard
|
r17364 | b2 | ||
Patrick Mezard
|
r17363 | $ fileset 'a* - a1' | ||
a2 | ||||
Matt Mackall
|
r19470 | $ fileset 'a_b' | ||
Yuya Nishihara
|
r26233 | $ fileset '"\xy"' | ||
Yuya Nishihara
|
r38349 | hg: parse error: invalid \x escape* (glob) | ||
Martin von Zweigbergk
|
r46507 | [10] | ||
Patrick Mezard
|
r17362 | |||
Yuya Nishihara
|
r35709 | Test invalid syntax | ||
$ fileset -v '"added"()' | ||||
(func | ||||
(string 'added') | ||||
None) | ||||
hg: parse error: not a symbol | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||
Yuya Nishihara
|
r35709 | $ fileset -v '()()' | ||
(func | ||||
(group | ||||
None) | ||||
None) | ||||
hg: parse error: not a symbol | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||
Yuya Nishihara
|
r35710 | $ fileset -v -- '-x' | ||
(negate | ||||
(symbol 'x')) | ||||
hg: parse error: can't use negate operator in this context | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||
Yuya Nishihara
|
r35710 | $ fileset -v -- '-()' | ||
(negate | ||||
(group | ||||
None)) | ||||
hg: parse error: can't use negate operator in this context | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||
Yuya Nishihara
|
r38839 | $ fileset -p parsed 'a, b, c' | ||
* parsed: | ||||
(list | ||||
(symbol 'a') | ||||
(symbol 'b') | ||||
(symbol 'c')) | ||||
hg: parse error: can't use a list in this context | ||||
Martin von Zweigbergk
|
r38846 | (see 'hg help "filesets.x or y"') | ||
Martin von Zweigbergk
|
r46507 | [10] | ||
Yuya Nishihara
|
r35709 | |||
Yuya Nishihara
|
r35759 | $ fileset '"path":.' | ||
hg: parse error: not a symbol | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||
Yuya Nishihara
|
r35759 | $ fileset 'path:foo bar' | ||
hg: parse error at 9: invalid token | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||
Yuya Nishihara
|
r35759 | $ fileset 'foo:bar:baz' | ||
hg: parse error: not a symbol | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||
Yuya Nishihara
|
r35759 | $ fileset 'foo:bar()' | ||
hg: parse error: pattern must be a string | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||
Yuya Nishihara
|
r35759 | $ fileset 'foo:bar' | ||
hg: parse error: invalid pattern kind: foo | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||
Yuya Nishihara
|
r35759 | |||
Yuya Nishihara
|
r38837 | Show parsed tree at stages: | ||
$ fileset -p unknown a | ||||
abort: invalid stage name: unknown | ||||
[255] | ||||
$ fileset -p parsed 'path:a1 or glob:b?' | ||||
* parsed: | ||||
(or | ||||
(kindpat | ||||
(symbol 'path') | ||||
(symbol 'a1')) | ||||
(kindpat | ||||
(symbol 'glob') | ||||
(symbol 'b?'))) | ||||
a1 | ||||
b1 | ||||
b2 | ||||
Yuya Nishihara
|
r38838 | $ fileset -p all -s 'a1 or a2 or (grep("b") & clean())' | ||
Yuya Nishihara
|
r38837 | * parsed: | ||
(or | ||||
Yuya Nishihara
|
r38840 | (symbol 'a1') | ||
(symbol 'a2') | ||||
Yuya Nishihara
|
r38837 | (group | ||
(and | ||||
(func | ||||
(symbol 'grep') | ||||
(string 'b')) | ||||
(func | ||||
(symbol 'clean') | ||||
None)))) | ||||
Yuya Nishihara
|
r38862 | * analyzed: | ||
(or | ||||
(symbol 'a1') | ||||
(symbol 'a2') | ||||
Yuya Nishihara
|
r38863 | (and | ||
(func | ||||
(symbol 'grep') | ||||
(string 'b')) | ||||
Yuya Nishihara
|
r38915 | (withstatus | ||
(func | ||||
(symbol 'clean') | ||||
None) | ||||
(string 'clean')))) | ||||
Yuya Nishihara
|
r38865 | * optimized: | ||
(or | ||||
Yuya Nishihara
|
r38901 | (patterns | ||
(symbol 'a1') | ||||
(symbol 'a2')) | ||||
Yuya Nishihara
|
r38865 | (and | ||
Yuya Nishihara
|
r38915 | (withstatus | ||
(func | ||||
(symbol 'clean') | ||||
None) | ||||
(string 'clean')) | ||||
Yuya Nishihara
|
r38865 | (func | ||
Yuya Nishihara
|
r38867 | (symbol 'grep') | ||
(string 'b')))) | ||||
Yuya Nishihara
|
r38838 | * matcher: | ||
<unionmatcher matchers=[ | ||||
Martin von Zweigbergk
|
r40818 | <patternmatcher patterns='a1$|a2$'>, | ||
Yuya Nishihara
|
r38838 | <intersectionmatcher | ||
Yuya Nishihara
|
r38867 | m1=<predicatenmatcher pred=clean>, | ||
m2=<predicatenmatcher pred=grep('b')>>]> | ||||
Yuya Nishihara
|
r38837 | a1 | ||
a2 | ||||
b1 | ||||
b2 | ||||
Yuya Nishihara
|
r38901 | Union of basic patterns: | ||
$ fileset -p optimized -s -r. 'a1 or a2 or path:b1' | ||||
* optimized: | ||||
(patterns | ||||
(symbol 'a1') | ||||
(symbol 'a2') | ||||
(kindpat | ||||
(symbol 'path') | ||||
(symbol 'b1'))) | ||||
* matcher: | ||||
Martin von Zweigbergk
|
r40818 | <patternmatcher patterns='a1$|a2$|b1(?:/|$)'> | ||
Yuya Nishihara
|
r38901 | a1 | ||
a2 | ||||
b1 | ||||
Yuya Nishihara
|
r38900 | OR expression should be reordered by weight: | ||
$ fileset -p optimized -s -r. 'grep("a") or a1 or grep("b") or b2' | ||||
* optimized: | ||||
(or | ||||
Yuya Nishihara
|
r38901 | (patterns | ||
(symbol 'a1') | ||||
(symbol 'b2')) | ||||
Yuya Nishihara
|
r38900 | (func | ||
(symbol 'grep') | ||||
(string 'a')) | ||||
(func | ||||
(symbol 'grep') | ||||
(string 'b'))) | ||||
* matcher: | ||||
<unionmatcher matchers=[ | ||||
Martin von Zweigbergk
|
r40818 | <patternmatcher patterns='a1$|b2$'>, | ||
Yuya Nishihara
|
r38900 | <predicatenmatcher pred=grep('a')>, | ||
<predicatenmatcher pred=grep('b')>]> | ||||
a1 | ||||
a2 | ||||
b1 | ||||
b2 | ||||
Yuya Nishihara
|
r38868 | Use differencematcher for 'x and not y': | ||
$ fileset -p optimized -s 'a* and not a1' | ||||
* optimized: | ||||
(minus | ||||
(symbol 'a*') | ||||
(symbol 'a1')) | ||||
* matcher: | ||||
<differencematcher | ||||
Martin von Zweigbergk
|
r40818 | m1=<patternmatcher patterns='a[^/]*$'>, | ||
m2=<patternmatcher patterns='a1$'>> | ||||
Yuya Nishihara
|
r38868 | a2 | ||
$ fileset -p optimized -s '!binary() and a*' | ||||
* optimized: | ||||
(minus | ||||
(symbol 'a*') | ||||
(func | ||||
(symbol 'binary') | ||||
None)) | ||||
* matcher: | ||||
<differencematcher | ||||
Martin von Zweigbergk
|
r40818 | m1=<patternmatcher patterns='a[^/]*$'>, | ||
Yuya Nishihara
|
r38868 | m2=<predicatenmatcher pred=binary>> | ||
a1 | ||||
a2 | ||||
'x - y' is rewritten to 'x and not y' first so the operands can be reordered: | ||||
$ fileset -p analyzed -p optimized -s 'a* - a1' | ||||
* analyzed: | ||||
(and | ||||
(symbol 'a*') | ||||
(not | ||||
(symbol 'a1'))) | ||||
* optimized: | ||||
(minus | ||||
(symbol 'a*') | ||||
(symbol 'a1')) | ||||
* matcher: | ||||
<differencematcher | ||||
Martin von Zweigbergk
|
r40818 | m1=<patternmatcher patterns='a[^/]*$'>, | ||
m2=<patternmatcher patterns='a1$'>> | ||||
Yuya Nishihara
|
r38868 | a2 | ||
$ fileset -p analyzed -p optimized -s 'binary() - a*' | ||||
* analyzed: | ||||
(and | ||||
(func | ||||
(symbol 'binary') | ||||
None) | ||||
(not | ||||
(symbol 'a*'))) | ||||
* optimized: | ||||
(and | ||||
(not | ||||
(symbol 'a*')) | ||||
(func | ||||
(symbol 'binary') | ||||
None)) | ||||
* matcher: | ||||
<intersectionmatcher | ||||
m1=<predicatenmatcher | ||||
pred=<not | ||||
Martin von Zweigbergk
|
r40818 | <patternmatcher patterns='a[^/]*$'>>>, | ||
Yuya Nishihara
|
r38868 | m2=<predicatenmatcher pred=binary>> | ||
Patrick Mezard
|
r17364 | Test files status | ||
$ rm a1 | ||||
$ hg rm a2 | ||||
$ echo b >> b2 | ||||
$ hg cp b1 c1 | ||||
$ echo c > c2 | ||||
$ echo c > c3 | ||||
$ cat > .hgignore <<EOF | ||||
> \.hgignore | ||||
> 2$ | ||||
> EOF | ||||
$ fileset 'modified()' | ||||
b2 | ||||
$ fileset 'added()' | ||||
c1 | ||||
$ fileset 'removed()' | ||||
a2 | ||||
$ fileset 'deleted()' | ||||
a1 | ||||
liscju
|
r27024 | $ fileset 'missing()' | ||
a1 | ||||
Patrick Mezard
|
r17364 | $ fileset 'unknown()' | ||
c3 | ||||
$ fileset 'ignored()' | ||||
.hgignore | ||||
c2 | ||||
$ fileset 'hgignore()' | ||||
Yuya Nishihara
|
r38711 | .hgignore | ||
Patrick Mezard
|
r17364 | a2 | ||
b2 | ||||
Yuya Nishihara
|
r38711 | c2 | ||
Patrick Mezard
|
r17364 | $ fileset 'clean()' | ||
b1 | ||||
$ fileset 'copied()' | ||||
c1 | ||||
Pierre-Yves David
|
r31193 | Test files status in different revisions | ||
$ hg status -m | ||||
M b2 | ||||
$ fileset -r0 'revs("wdir()", modified())' --traceback | ||||
b2 | ||||
$ hg status -a | ||||
A c1 | ||||
$ fileset -r0 'revs("wdir()", added())' | ||||
c1 | ||||
$ hg status --change 0 -a | ||||
A a1 | ||||
A a2 | ||||
A b1 | ||||
A b2 | ||||
$ hg status -mru | ||||
M b2 | ||||
R a2 | ||||
? c3 | ||||
$ fileset -r0 'added() and revs("wdir()", modified() or removed() or unknown())' | ||||
Yuya Nishihara
|
r38618 | a2 | ||
Pierre-Yves David
|
r31193 | b2 | ||
$ fileset -r0 'added() or revs("wdir()", added())' | ||||
a1 | ||||
a2 | ||||
b1 | ||||
b2 | ||||
c1 | ||||
Yuya Nishihara
|
r38915 | Test insertion of status hints | ||
$ fileset -p optimized 'added()' | ||||
* optimized: | ||||
(withstatus | ||||
(func | ||||
(symbol 'added') | ||||
None) | ||||
(string 'added')) | ||||
c1 | ||||
$ fileset -p optimized 'a* & removed()' | ||||
* optimized: | ||||
(and | ||||
(symbol 'a*') | ||||
(withstatus | ||||
(func | ||||
(symbol 'removed') | ||||
None) | ||||
(string 'removed'))) | ||||
a2 | ||||
$ fileset -p optimized 'a* - removed()' | ||||
* optimized: | ||||
(minus | ||||
(symbol 'a*') | ||||
(withstatus | ||||
(func | ||||
(symbol 'removed') | ||||
None) | ||||
(string 'removed'))) | ||||
a1 | ||||
$ fileset -p analyzed -p optimized '(added() + removed()) - a*' | ||||
* analyzed: | ||||
(and | ||||
(withstatus | ||||
(or | ||||
(func | ||||
(symbol 'added') | ||||
None) | ||||
(func | ||||
(symbol 'removed') | ||||
None)) | ||||
(string 'added removed')) | ||||
(not | ||||
(symbol 'a*'))) | ||||
* optimized: | ||||
(and | ||||
(not | ||||
(symbol 'a*')) | ||||
(withstatus | ||||
(or | ||||
(func | ||||
(symbol 'added') | ||||
None) | ||||
(func | ||||
(symbol 'removed') | ||||
None)) | ||||
(string 'added removed'))) | ||||
c1 | ||||
$ fileset -p optimized 'a* + b* + added() + unknown()' | ||||
* optimized: | ||||
(withstatus | ||||
(or | ||||
(patterns | ||||
(symbol 'a*') | ||||
(symbol 'b*')) | ||||
(func | ||||
(symbol 'added') | ||||
None) | ||||
(func | ||||
(symbol 'unknown') | ||||
None)) | ||||
(string 'added unknown')) | ||||
a1 | ||||
a2 | ||||
b1 | ||||
b2 | ||||
c1 | ||||
c3 | ||||
$ fileset -p analyzed -p optimized 'removed() & missing() & a*' | ||||
* analyzed: | ||||
(and | ||||
(withstatus | ||||
(and | ||||
(func | ||||
(symbol 'removed') | ||||
None) | ||||
(func | ||||
(symbol 'missing') | ||||
None)) | ||||
(string 'removed missing')) | ||||
(symbol 'a*')) | ||||
* optimized: | ||||
(and | ||||
(symbol 'a*') | ||||
(withstatus | ||||
(and | ||||
(func | ||||
(symbol 'removed') | ||||
None) | ||||
(func | ||||
(symbol 'missing') | ||||
None)) | ||||
(string 'removed missing'))) | ||||
$ fileset -p optimized 'clean() & revs(0, added())' | ||||
* optimized: | ||||
(and | ||||
(withstatus | ||||
(func | ||||
(symbol 'clean') | ||||
None) | ||||
(string 'clean')) | ||||
(func | ||||
(symbol 'revs') | ||||
(list | ||||
(symbol '0') | ||||
(withstatus | ||||
(func | ||||
(symbol 'added') | ||||
None) | ||||
(string 'added'))))) | ||||
b1 | ||||
$ fileset -p optimized 'clean() & status(null, 0, b* & added())' | ||||
* optimized: | ||||
(and | ||||
(withstatus | ||||
(func | ||||
(symbol 'clean') | ||||
None) | ||||
(string 'clean')) | ||||
(func | ||||
(symbol 'status') | ||||
(list | ||||
(symbol 'null') | ||||
(symbol '0') | ||||
(and | ||||
(symbol 'b*') | ||||
(withstatus | ||||
(func | ||||
(symbol 'added') | ||||
None) | ||||
(string 'added')))))) | ||||
b1 | ||||
Patrick Mezard
|
r17365 | Test files properties | ||
Pulkit Goyal
|
r38091 | >>> open('bin', 'wb').write(b'\0a') and None | ||
Patrick Mezard
|
r17365 | $ fileset 'binary()' | ||
Yuya Nishihara
|
r38711 | bin | ||
Patrick Mezard
|
r17366 | $ fileset 'binary() and unknown()' | ||
bin | ||||
Patrick Mezard
|
r17367 | $ echo '^bin$' >> .hgignore | ||
$ fileset 'binary() and ignored()' | ||||
bin | ||||
Patrick Mezard
|
r17366 | $ hg add bin | ||
$ fileset 'binary()' | ||||
bin | ||||
Patrick Mezard
|
r17365 | |||
Yuya Nishihara
|
r38867 | $ fileset -p optimized -s 'binary() and b*' | ||
* optimized: | ||||
(and | ||||
(symbol 'b*') | ||||
(func | ||||
(symbol 'binary') | ||||
None)) | ||||
* matcher: | ||||
<intersectionmatcher | ||||
Martin von Zweigbergk
|
r40818 | m1=<patternmatcher patterns='b[^/]*$'>, | ||
Yuya Nishihara
|
r38867 | m2=<predicatenmatcher pred=binary>> | ||
bin | ||||
Patrick Mezard
|
r17368 | $ fileset 'grep("b{1}")' | ||
Yuya Nishihara
|
r38711 | .hgignore | ||
Yuya Nishihara
|
r38618 | b1 | ||
Patrick Mezard
|
r17368 | b2 | ||
c1 | ||||
$ fileset 'grep("missingparens(")' | ||||
Yuya Nishihara
|
r38349 | hg: parse error: invalid match pattern: (unbalanced parenthesis|missing \)).* (re) | ||
Martin von Zweigbergk
|
r46507 | [10] | ||
Patrick Mezard
|
r17368 | |||
Patrick Mezard
|
r17369 | #if execbit | ||
$ chmod +x b2 | ||||
$ fileset 'exec()' | ||||
b2 | ||||
#endif | ||||
#if symlink | ||||
$ ln -s b2 b2link | ||||
$ fileset 'symlink() and unknown()' | ||||
b2link | ||||
$ hg add b2link | ||||
#endif | ||||
Siddharth Agarwal
|
r24408 | #if no-windows | ||
$ echo foo > con.xml | ||||
Siddharth Agarwal
|
r24430 | $ fileset 'not portable()' | ||
Siddharth Agarwal
|
r24408 | con.xml | ||
Siddharth Agarwal
|
r24430 | $ hg --config ui.portablefilenames=ignore add con.xml | ||
Siddharth Agarwal
|
r24408 | #endif | ||
Pulkit Goyal
|
r38091 | >>> open('1k', 'wb').write(b' '*1024) and None | ||
>>> open('2k', 'wb').write(b' '*2048) and None | ||||
Patrick Mezard
|
r17369 | $ hg add 1k 2k | ||
$ fileset 'size("bar")' | ||||
hg: parse error: couldn't parse size: bar | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||
timeless
|
r27518 | $ fileset '(1k, 2k)' | ||
hg: parse error: can't use a list in this context | ||||
Martin von Zweigbergk
|
r38846 | (see 'hg help "filesets.x or y"') | ||
Martin von Zweigbergk
|
r46507 | [10] | ||
Patrick Mezard
|
r17369 | $ fileset 'size(1k)' | ||
1k | ||||
$ fileset '(1k or 2k) and size("< 2k")' | ||||
1k | ||||
$ fileset '(1k or 2k) and size("<=2k")' | ||||
1k | ||||
2k | ||||
$ fileset '(1k or 2k) and size("> 1k")' | ||||
2k | ||||
$ fileset '(1k or 2k) and size(">=1K")' | ||||
1k | ||||
2k | ||||
$ fileset '(1k or 2k) and size(".5KB - 1.5kB")' | ||||
1k | ||||
r25925 | $ fileset 'size("1M")' | |||
$ fileset 'size("1 GB")' | ||||
Patrick Mezard
|
r17369 | |||
Test merge states | ||||
$ hg ci -m manychanges | ||||
Matt Harbison
|
r35968 | $ hg file -r . 'set:copied() & modified()' | ||
[1] | ||||
Patrick Mezard
|
r17369 | $ hg up -C 0 | ||
* files updated, 0 files merged, * files removed, 0 files unresolved (glob) | ||||
$ echo c >> b2 | ||||
$ hg ci -m diverging b2 | ||||
created new head | ||||
$ fileset 'resolved()' | ||||
$ fileset 'unresolved()' | ||||
$ hg merge | ||||
merging b2 | ||||
Siddharth Agarwal
|
r26614 | warning: conflicts while merging b2! (edit, then use 'hg resolve --mark') | ||
Matt Harbison
|
r26953 | * files updated, 0 files merged, 1 files removed, 1 files unresolved (glob) | ||
Pulkit Goyal
|
r35722 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | ||
Patrick Mezard
|
r17369 | [1] | ||
$ fileset 'resolved()' | ||||
$ fileset 'unresolved()' | ||||
b2 | ||||
$ echo e > b2 | ||||
$ hg resolve -m b2 | ||||
Pierre-Yves David
|
r21947 | (no more unresolved files) | ||
Patrick Mezard
|
r17369 | $ fileset 'resolved()' | ||
b2 | ||||
$ fileset 'unresolved()' | ||||
$ hg ci -m merge | ||||
Test subrepo predicate | ||||
$ hg init sub | ||||
$ echo a > sub/suba | ||||
$ hg -R sub add sub/suba | ||||
$ hg -R sub ci -m sub | ||||
$ echo 'sub = sub' > .hgsub | ||||
Matt Harbison
|
r25558 | $ hg init sub2 | ||
$ echo b > sub2/b | ||||
$ hg -R sub2 ci -Am sub2 | ||||
adding b | ||||
$ echo 'sub2 = sub2' >> .hgsub | ||||
Patrick Mezard
|
r17369 | $ fileset 'subrepo()' | ||
$ hg add .hgsub | ||||
$ fileset 'subrepo()' | ||||
sub | ||||
Matt Harbison
|
r25558 | sub2 | ||
Patrick Mezard
|
r17369 | $ fileset 'subrepo("sub")' | ||
sub | ||||
$ fileset 'subrepo("glob:*")' | ||||
sub | ||||
Matt Harbison
|
r25558 | sub2 | ||
Patrick Mezard
|
r17370 | $ hg ci -m subrepo | ||
Patrick Mezard
|
r17369 | |||
Matt Harbison
|
r25558 | Test that .hgsubstate is updated as appropriate during a conversion. The | ||
saverev property is enough to alter the hashes of the subrepo. | ||||
$ hg init ../converted | ||||
$ hg --config extensions.convert= convert --config convert.hg.saverev=True \ | ||||
> sub ../converted/sub | ||||
initializing destination ../converted/sub repository | ||||
scanning source... | ||||
sorting... | ||||
converting... | ||||
0 sub | ||||
$ hg clone -U sub2 ../converted/sub2 | ||||
$ hg --config extensions.convert= convert --config convert.hg.saverev=True \ | ||||
> . ../converted | ||||
scanning source... | ||||
sorting... | ||||
converting... | ||||
4 addfiles | ||||
3 manychanges | ||||
2 diverging | ||||
1 merge | ||||
0 subrepo | ||||
no ".hgsubstate" updates will be made for "sub2" | ||||
$ hg up -q -R ../converted -r tip | ||||
$ hg --cwd ../converted cat sub/suba sub2/b -r tip | ||||
a | ||||
b | ||||
$ oldnode=`hg log -r tip -T "{node}\n"` | ||||
$ newnode=`hg log -R ../converted -r tip -T "{node}\n"` | ||||
Yuya Nishihara
|
r25587 | $ [ "$oldnode" != "$newnode" ] || echo "nothing changed" | ||
Matt Harbison
|
r25558 | |||
Patrick Mezard
|
r17370 | Test with a revision | ||
$ hg log -G --template '{rev} {desc}\n' | ||||
@ 4 subrepo | ||||
| | ||||
o 3 merge | ||||
|\ | ||||
| o 2 diverging | ||||
| | | ||||
o | 1 manychanges | ||||
|/ | ||||
o 0 addfiles | ||||
$ echo unknown > unknown | ||||
$ fileset -r1 'modified()' | ||||
b2 | ||||
$ fileset -r1 'added() and c1' | ||||
c1 | ||||
$ fileset -r1 'removed()' | ||||
a2 | ||||
$ fileset -r1 'deleted()' | ||||
$ fileset -r1 'unknown()' | ||||
$ fileset -r1 'ignored()' | ||||
$ fileset -r1 'hgignore()' | ||||
Yuya Nishihara
|
r38711 | .hgignore | ||
a2 | ||||
Patrick Mezard
|
r17370 | b2 | ||
bin | ||||
Yuya Nishihara
|
r38711 | c2 | ||
sub2 | ||||
Patrick Mezard
|
r17370 | $ fileset -r1 'binary()' | ||
bin | ||||
$ fileset -r1 'size(1k)' | ||||
1k | ||||
$ fileset -r3 'resolved()' | ||||
$ fileset -r3 'unresolved()' | ||||
#if execbit | ||||
$ fileset -r1 'exec()' | ||||
b2 | ||||
#endif | ||||
#if symlink | ||||
$ fileset -r1 'symlink()' | ||||
b2link | ||||
#endif | ||||
Siddharth Agarwal
|
r24408 | #if no-windows | ||
$ fileset -r1 'not portable()' | ||||
con.xml | ||||
Matt Harbison
|
r24424 | $ hg forget 'con.xml' | ||
Siddharth Agarwal
|
r24408 | #endif | ||
Patrick Mezard
|
r17370 | $ fileset -r4 'subrepo("re:su.*")' | ||
sub | ||||
Matt Harbison
|
r25558 | sub2 | ||
Yuya Nishihara
|
r35759 | $ fileset -r4 'subrepo(re:su.*)' | ||
sub | ||||
sub2 | ||||
Patrick Mezard
|
r17370 | $ fileset -r4 'subrepo("sub")' | ||
sub | ||||
Patrick Mezard
|
r17371 | $ fileset -r4 'b2 or c1' | ||
b2 | ||||
c1 | ||||
Patrick Mezard
|
r17370 | |||
Pulkit Goyal
|
r38091 | >>> open('dos', 'wb').write(b"dos\r\n") and None | ||
>>> open('mixed', 'wb').write(b"dos\r\nunix\n") and None | ||||
>>> open('mac', 'wb').write(b"mac\r") and None | ||||
Matt Mackall
|
r18842 | $ hg add dos mixed mac | ||
FUJIWARA Katsunori
|
r27459 | (remove a1, to examine safety of 'eol' on removed files) | ||
$ rm a1 | ||||
Matt Mackall
|
r18842 | $ fileset 'eol(dos)' | ||
dos | ||||
mixed | ||||
$ fileset 'eol(unix)' | ||||
Yuya Nishihara
|
r38711 | .hgignore | ||
Matt Mackall
|
r18842 | .hgsub | ||
.hgsubstate | ||||
b1 | ||||
b2 | ||||
Yuya Nishihara
|
r38711 | b2.orig | ||
Matt Mackall
|
r18842 | c1 | ||
Yuya Nishihara
|
r38711 | c2 | ||
c3 | ||||
Yuya Nishihara
|
r38772 | con.xml (no-windows !) | ||
Yuya Nishihara
|
r38618 | mixed | ||
Yuya Nishihara
|
r38711 | unknown | ||
Matt Mackall
|
r18842 | $ fileset 'eol(mac)' | ||
mac | ||||
FUJIWARA Katsunori
|
r27459 | |||
Test safety of 'encoding' on removed files | ||||
$ fileset 'encoding("ascii")' | ||||
Yuya Nishihara
|
r38711 | .hgignore | ||
FUJIWARA Katsunori
|
r27459 | .hgsub | ||
.hgsubstate | ||||
1k | ||||
2k | ||||
b1 | ||||
b2 | ||||
Yuya Nishihara
|
r38711 | b2.orig | ||
Matt Harbison
|
r31853 | b2link (symlink !) | ||
FUJIWARA Katsunori
|
r27459 | bin | ||
c1 | ||||
Yuya Nishihara
|
r38711 | c2 | ||
c3 | ||||
Yuya Nishihara
|
r38772 | con.xml (no-windows !) | ||
Yuya Nishihara
|
r38618 | dos | ||
mac | ||||
mixed | ||||
Yuya Nishihara
|
r38711 | unknown | ||
FUJIWARA Katsunori
|
r27464 | |||
Pierre-Yves David
|
r31193 | Test 'revs(...)' | ||
================ | ||||
small reminder of the repository state | ||||
$ hg log -G | ||||
Matt Harbison
|
r31852 | @ changeset: 4:* (glob) | ||
Pierre-Yves David
|
r31193 | | tag: tip | ||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: subrepo | ||||
| | ||||
Matt Harbison
|
r31852 | o changeset: 3:* (glob) | ||
Pierre-Yves David
|
r31193 | |\ parent: 2:55b05bdebf36 | ||
Matt Harbison
|
r31852 | | | parent: 1:* (glob) | ||
Pierre-Yves David
|
r31193 | | | user: test | ||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: merge | ||||
| | | ||||
| o changeset: 2:55b05bdebf36 | ||||
| | parent: 0:8a9576c51c1f | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: diverging | ||||
| | | ||||
Matt Harbison
|
r31852 | o | changeset: 1:* (glob) | ||
Pierre-Yves David
|
r31193 | |/ user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: manychanges | ||||
| | ||||
o changeset: 0:8a9576c51c1f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: addfiles | ||||
$ hg status --change 0 | ||||
A a1 | ||||
A a2 | ||||
A b1 | ||||
A b2 | ||||
$ hg status --change 1 | ||||
M b2 | ||||
A 1k | ||||
A 2k | ||||
Matt Harbison
|
r43743 | A b2link (symlink !) | ||
Pierre-Yves David
|
r31193 | A bin | ||
A c1 | ||||
Matt Harbison
|
r31830 | A con.xml (no-windows !) | ||
Pierre-Yves David
|
r31193 | R a2 | ||
$ hg status --change 2 | ||||
M b2 | ||||
$ hg status --change 3 | ||||
M b2 | ||||
A 1k | ||||
A 2k | ||||
Matt Harbison
|
r43743 | A b2link (symlink !) | ||
Pierre-Yves David
|
r31193 | A bin | ||
A c1 | ||||
Matt Harbison
|
r31830 | A con.xml (no-windows !) | ||
Pierre-Yves David
|
r31193 | R a2 | ||
$ hg status --change 4 | ||||
A .hgsub | ||||
A .hgsubstate | ||||
$ hg status | ||||
A dos | ||||
A mac | ||||
A mixed | ||||
Matt Harbison
|
r31830 | R con.xml (no-windows !) | ||
Pierre-Yves David
|
r31193 | ! a1 | ||
? b2.orig | ||||
? c3 | ||||
? unknown | ||||
Test files at -r0 should be filtered by files at wdir | ||||
----------------------------------------------------- | ||||
Yuya Nishihara
|
r38708 | $ fileset -r0 'tracked() and revs("wdir()", tracked())' | ||
Pierre-Yves David
|
r31193 | a1 | ||
b1 | ||||
b2 | ||||
Test that "revs()" work at all | ||||
------------------------------ | ||||
$ fileset "revs('2', modified())" | ||||
b2 | ||||
Test that "revs()" work for file missing in the working copy/current context | ||||
---------------------------------------------------------------------------- | ||||
(a2 not in working copy) | ||||
$ fileset "revs('0', added())" | ||||
a1 | ||||
a2 | ||||
b1 | ||||
b2 | ||||
(none of the file exist in "0") | ||||
$ fileset -r 0 "revs('4', added())" | ||||
.hgsub | ||||
.hgsubstate | ||||
Call with empty revset | ||||
-------------------------- | ||||
$ fileset "revs('2-2', modified())" | ||||
Call with revset matching multiple revs | ||||
--------------------------------------- | ||||
$ fileset "revs('0+4', added())" | ||||
Yuya Nishihara
|
r38618 | .hgsub | ||
.hgsubstate | ||||
Pierre-Yves David
|
r31193 | a1 | ||
a2 | ||||
b1 | ||||
b2 | ||||
overlapping set | ||||
$ fileset "revs('1+2', modified())" | ||||
b2 | ||||
Pierre-Yves David
|
r31195 | |||
test 'status(...)' | ||||
================= | ||||
Simple case | ||||
----------- | ||||
$ fileset "status(3, 4, added())" | ||||
.hgsub | ||||
.hgsubstate | ||||
use rev to restrict matched file | ||||
----------------------------------------- | ||||
$ hg status --removed --rev 0 --rev 1 | ||||
R a2 | ||||
$ fileset "status(0, 1, removed())" | ||||
a2 | ||||
Yuya Nishihara
|
r38708 | $ fileset "tracked() and status(0, 1, removed())" | ||
Pierre-Yves David
|
r31195 | $ fileset -r 4 "status(0, 1, removed())" | ||
a2 | ||||
Yuya Nishihara
|
r38708 | $ fileset -r 4 "tracked() and status(0, 1, removed())" | ||
$ fileset "revs('4', tracked() and status(0, 1, removed()))" | ||||
$ fileset "revs('0', tracked() and status(0, 1, removed()))" | ||||
Pierre-Yves David
|
r31195 | a2 | ||
check wdir() | ||||
------------ | ||||
$ hg status --removed --rev 4 | ||||
Matt Harbison
|
r31830 | R con.xml (no-windows !) | ||
Pierre-Yves David
|
r31195 | $ fileset "status(4, 'wdir()', removed())" | ||
Matt Harbison
|
r31830 | con.xml (no-windows !) | ||
Pierre-Yves David
|
r31195 | |||
$ hg status --removed --rev 2 | ||||
R a2 | ||||
$ fileset "status('2', 'wdir()', removed())" | ||||
a2 | ||||
test backward status | ||||
-------------------- | ||||
$ hg status --removed --rev 0 --rev 4 | ||||
R a2 | ||||
$ hg status --added --rev 4 --rev 0 | ||||
A a2 | ||||
$ fileset "status(4, 0, added())" | ||||
a2 | ||||
test cross branch status | ||||
------------------------ | ||||
$ hg status --added --rev 1 --rev 2 | ||||
A a2 | ||||
$ fileset "status(1, 2, added())" | ||||
a2 | ||||
test with multi revs revset | ||||
--------------------------- | ||||
$ hg status --added --rev 0:1 --rev 3:4 | ||||
A .hgsub | ||||
A .hgsubstate | ||||
A 1k | ||||
A 2k | ||||
Matt Harbison
|
r43743 | A b2link (symlink !) | ||
Pierre-Yves David
|
r31195 | A bin | ||
A c1 | ||||
Matt Harbison
|
r31830 | A con.xml (no-windows !) | ||
Pierre-Yves David
|
r31195 | $ fileset "status('0:1', '3:4', added())" | ||
.hgsub | ||||
.hgsubstate | ||||
1k | ||||
2k | ||||
Matt Harbison
|
r43743 | b2link (symlink !) | ||
Pierre-Yves David
|
r31195 | bin | ||
c1 | ||||
Matt Harbison
|
r31830 | con.xml (no-windows !) | ||
Pierre-Yves David
|
r31195 | |||
tests with empty value | ||||
---------------------- | ||||
Fully empty revset | ||||
$ fileset "status('', '4', added())" | ||||
hg: parse error: first argument to status must be a revision | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||
Pierre-Yves David
|
r31195 | $ fileset "status('2', '', added())" | ||
hg: parse error: second argument to status must be a revision | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||
Pierre-Yves David
|
r31195 | |||
Empty revset will error at the revset layer | ||||
$ fileset "status(' ', '4', added())" | ||||
hg: parse error at 1: not a prefix: end | ||||
Ryan McElroy
|
r36703 | ( | ||
^ here) | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||
Pierre-Yves David
|
r31195 | $ fileset "status('2', ' ', added())" | ||
hg: parse error at 1: not a prefix: end | ||||
Ryan McElroy
|
r36703 | ( | ||
^ here) | ||||
Martin von Zweigbergk
|
r46507 | [10] | ||