test-status.t
623 lines
| 10.9 KiB
| text/troff
|
Tads3Lexer
/ tests / test-status.t
Nicolas Dumazet
|
r11782 | $ hg init repo1 | ||
$ cd repo1 | ||||
$ mkdir a b a/1 b/1 b/2 | ||||
$ touch in_root a/in_a b/in_b a/1/in_a_1 b/1/in_b_1 b/2/in_b_2 | ||||
hg status in repo root: | ||||
$ hg status | ||||
? a/1/in_a_1 | ||||
? a/in_a | ||||
? b/1/in_b_1 | ||||
? b/2/in_b_2 | ||||
? b/in_b | ||||
? in_root | ||||
hg status . in repo root: | ||||
$ hg status . | ||||
? a/1/in_a_1 | ||||
? a/in_a | ||||
? b/1/in_b_1 | ||||
? b/2/in_b_2 | ||||
? b/in_b | ||||
? in_root | ||||
$ hg status --cwd a | ||||
? a/1/in_a_1 | ||||
? a/in_a | ||||
? b/1/in_b_1 | ||||
? b/2/in_b_2 | ||||
? b/in_b | ||||
? in_root | ||||
$ hg status --cwd a . | ||||
? 1/in_a_1 | ||||
? in_a | ||||
$ hg status --cwd a .. | ||||
? 1/in_a_1 | ||||
? in_a | ||||
? ../b/1/in_b_1 | ||||
? ../b/2/in_b_2 | ||||
? ../b/in_b | ||||
? ../in_root | ||||
$ hg status --cwd b | ||||
? a/1/in_a_1 | ||||
? a/in_a | ||||
? b/1/in_b_1 | ||||
? b/2/in_b_2 | ||||
? b/in_b | ||||
? in_root | ||||
$ hg status --cwd b . | ||||
? 1/in_b_1 | ||||
? 2/in_b_2 | ||||
? in_b | ||||
$ hg status --cwd b .. | ||||
? ../a/1/in_a_1 | ||||
? ../a/in_a | ||||
? 1/in_b_1 | ||||
? 2/in_b_2 | ||||
? in_b | ||||
? ../in_root | ||||
$ hg status --cwd a/1 | ||||
? a/1/in_a_1 | ||||
? a/in_a | ||||
? b/1/in_b_1 | ||||
? b/2/in_b_2 | ||||
? b/in_b | ||||
? in_root | ||||
$ hg status --cwd a/1 . | ||||
? in_a_1 | ||||
$ hg status --cwd a/1 .. | ||||
? in_a_1 | ||||
? ../in_a | ||||
$ hg status --cwd b/1 | ||||
? a/1/in_a_1 | ||||
? a/in_a | ||||
? b/1/in_b_1 | ||||
? b/2/in_b_2 | ||||
? b/in_b | ||||
? in_root | ||||
$ hg status --cwd b/1 . | ||||
? in_b_1 | ||||
$ hg status --cwd b/1 .. | ||||
? in_b_1 | ||||
? ../2/in_b_2 | ||||
? ../in_b | ||||
$ hg status --cwd b/2 | ||||
? a/1/in_a_1 | ||||
? a/in_a | ||||
? b/1/in_b_1 | ||||
? b/2/in_b_2 | ||||
? b/in_b | ||||
? in_root | ||||
$ hg status --cwd b/2 . | ||||
? in_b_2 | ||||
$ hg status --cwd b/2 .. | ||||
? ../1/in_b_1 | ||||
? in_b_2 | ||||
? ../in_b | ||||
Mads Kiilerich
|
r19107 | |||
combining patterns with root and patterns without a root works | ||||
$ hg st a/in_a re:.*b$ | ||||
? a/in_a | ||||
? b/in_b | ||||
Augie Fackler
|
r32872 | tweaking defaults works | ||
$ hg status --cwd a --config ui.tweakdefaults=yes | ||||
Gregory Szorc
|
r38785 | ? 1/in_a_1 | ||
? in_a | ||||
? ../b/1/in_b_1 | ||||
? ../b/2/in_b_2 | ||||
? ../b/in_b | ||||
Augie Fackler
|
r32872 | ? ../in_root | ||
$ HGPLAIN=1 hg status --cwd a --config ui.tweakdefaults=yes | ||||
? a/1/in_a_1 (glob) | ||||
? a/in_a (glob) | ||||
? b/1/in_b_1 (glob) | ||||
? b/2/in_b_2 (glob) | ||||
? b/in_b (glob) | ||||
? in_root | ||||
$ HGPLAINEXCEPT=tweakdefaults hg status --cwd a --config ui.tweakdefaults=yes | ||||
Gregory Szorc
|
r38785 | ? 1/in_a_1 | ||
? in_a | ||||
? ../b/1/in_b_1 | ||||
? ../b/2/in_b_2 | ||||
? ../b/in_b | ||||
Matt Harbison
|
r32887 | ? ../in_root (glob) | ||
Augie Fackler
|
r32872 | |||
Martin von Zweigbergk
|
r31589 | relative paths can be requested | ||
$ cat >> $HGRCPATH <<EOF | ||||
> [commands] | ||||
> status.relative = True | ||||
> EOF | ||||
$ hg status --cwd a | ||||
? 1/in_a_1 | ||||
? in_a | ||||
? ../b/1/in_b_1 | ||||
? ../b/2/in_b_2 | ||||
? ../b/in_b | ||||
? ../in_root | ||||
$ HGPLAIN=1 hg status --cwd a | ||||
Matt Harbison
|
r31766 | ? a/1/in_a_1 (glob) | ||
? a/in_a (glob) | ||||
? b/1/in_b_1 (glob) | ||||
? b/2/in_b_2 (glob) | ||||
? b/in_b (glob) | ||||
Martin von Zweigbergk
|
r31589 | ? in_root | ||
Augie Fackler
|
r32872 | if relative paths are explicitly off, tweakdefaults doesn't change it | ||
$ cat >> $HGRCPATH <<EOF | ||||
> [commands] | ||||
> status.relative = False | ||||
> EOF | ||||
$ hg status --cwd a --config ui.tweakdefaults=yes | ||||
Gregory Szorc
|
r38785 | ? a/1/in_a_1 | ||
? a/in_a | ||||
? b/1/in_b_1 | ||||
? b/2/in_b_2 | ||||
? b/in_b | ||||
Augie Fackler
|
r32872 | ? in_root | ||
Nicolas Dumazet
|
r11782 | $ cd .. | ||
$ hg init repo2 | ||||
$ cd repo2 | ||||
$ touch modified removed deleted ignored | ||||
$ echo "^ignored$" > .hgignore | ||||
Martin Geisler
|
r12156 | $ hg ci -A -m 'initial checkin' | ||
Nicolas Dumazet
|
r11782 | adding .hgignore | ||
adding deleted | ||||
adding modified | ||||
adding removed | ||||
$ touch modified added unknown ignored | ||||
$ hg add added | ||||
$ hg remove removed | ||||
$ rm deleted | ||||
hg status: | ||||
$ hg status | ||||
A added | ||||
R removed | ||||
! deleted | ||||
? unknown | ||||
hg status modified added removed deleted unknown never-existed ignored: | ||||
$ hg status modified added removed deleted unknown never-existed ignored | ||||
Mads Kiilerich
|
r15521 | never-existed: * (glob) | ||
Nicolas Dumazet
|
r11782 | A added | ||
R removed | ||||
! deleted | ||||
? unknown | ||||
$ hg copy modified copied | ||||
hg status -C: | ||||
$ hg status -C | ||||
A added | ||||
A copied | ||||
modified | ||||
R removed | ||||
! deleted | ||||
? unknown | ||||
hg status -A: | ||||
$ hg status -A | ||||
A added | ||||
A copied | ||||
modified | ||||
R removed | ||||
! deleted | ||||
? unknown | ||||
I ignored | ||||
C .hgignore | ||||
C modified | ||||
Yuya Nishihara
|
r38563 | $ hg status -A -T '{status} {path} {node|shortest}\n' | ||
A added ffff | ||||
A copied ffff | ||||
R removed ffff | ||||
! deleted ffff | ||||
? unknown ffff | ||||
I ignored ffff | ||||
C .hgignore ffff | ||||
C modified ffff | ||||
Matt Mackall
|
r22429 | $ hg status -A -Tjson | ||
[ | ||||
{ | ||||
"path": "added", | ||||
"status": "A" | ||||
}, | ||||
{ | ||||
"path": "copied", | ||||
Yuya Nishihara
|
r39406 | "source": "modified", | ||
Matt Mackall
|
r22429 | "status": "A" | ||
}, | ||||
{ | ||||
"path": "removed", | ||||
"status": "R" | ||||
}, | ||||
{ | ||||
"path": "deleted", | ||||
"status": "!" | ||||
}, | ||||
{ | ||||
"path": "unknown", | ||||
"status": "?" | ||||
}, | ||||
{ | ||||
"path": "ignored", | ||||
"status": "I" | ||||
}, | ||||
{ | ||||
"path": ".hgignore", | ||||
"status": "C" | ||||
}, | ||||
{ | ||||
"path": "modified", | ||||
"status": "C" | ||||
} | ||||
] | ||||
Nicolas Dumazet
|
r11782 | |||
Matt Mackall
|
r22430 | $ hg status -A -Tpickle > pickle | ||
Pulkit Goyal
|
r29485 | >>> from __future__ import print_function | ||
Matt Mackall
|
r22430 | >>> import pickle | ||
Pulkit Goyal
|
r29485 | >>> print(sorted((x['status'], x['path']) for x in pickle.load(open("pickle")))) | ||
Matt Mackall
|
r22430 | [('!', 'deleted'), ('?', 'pickle'), ('?', 'unknown'), ('A', 'added'), ('A', 'copied'), ('C', '.hgignore'), ('C', 'modified'), ('I', 'ignored'), ('R', 'removed')] | ||
$ rm pickle | ||||
Nicolas Dumazet
|
r11782 | $ echo "^ignoreddir$" > .hgignore | ||
$ mkdir ignoreddir | ||||
$ touch ignoreddir/file | ||||
Matt Mackall
|
r25515 | Test templater support: | ||
Yuya Nishihara
|
r39406 | $ hg status -AT "[{status}]\t{if(source, '{source} -> ')}{path}\n" | ||
Matt Mackall
|
r25515 | [M] .hgignore | ||
[A] added | ||||
[A] modified -> copied | ||||
[R] removed | ||||
[!] deleted | ||||
[?] ignored | ||||
[?] unknown | ||||
[I] ignoreddir/file | ||||
[C] modified | ||||
$ hg status -AT default | ||||
M .hgignore | ||||
A added | ||||
A copied | ||||
modified | ||||
R removed | ||||
! deleted | ||||
? ignored | ||||
? unknown | ||||
I ignoreddir/file | ||||
C modified | ||||
$ hg status -T compact | ||||
abort: "status" not in template map | ||||
[255] | ||||
Nicolas Dumazet
|
r11782 | hg status ignoreddir/file: | ||
$ hg status ignoreddir/file | ||||
hg status -i ignoreddir/file: | ||||
$ hg status -i ignoreddir/file | ||||
I ignoreddir/file | ||||
$ cd .. | ||||
Matt Mackall
|
r12328 | Check 'status -q' and some combinations | ||
Nicolas Dumazet
|
r11782 | |||
$ hg init repo3 | ||||
$ cd repo3 | ||||
$ touch modified removed deleted ignored | ||||
$ echo "^ignored$" > .hgignore | ||||
$ hg commit -A -m 'initial checkin' | ||||
adding .hgignore | ||||
adding deleted | ||||
adding modified | ||||
adding removed | ||||
$ touch added unknown ignored | ||||
$ hg add added | ||||
$ echo "test" >> modified | ||||
$ hg remove removed | ||||
$ rm deleted | ||||
$ hg copy modified copied | ||||
Yuya Nishihara
|
r24419 | Specify working directory revision explicitly, that should be the same as | ||
"hg status" | ||||
$ hg status --change "wdir()" | ||||
M modified | ||||
A added | ||||
A copied | ||||
R removed | ||||
! deleted | ||||
? unknown | ||||
Matt Mackall
|
r12328 | Run status with 2 different flags. | ||
Check if result is the same or different. | ||||
If result is not as expected, raise error | ||||
Nicolas Dumazet
|
r11782 | |||
$ assert() { | ||||
Matt Mackall
|
r12365 | > hg status $1 > ../a | ||
> hg status $2 > ../b | ||||
> if diff ../a ../b > /dev/null; then | ||||
> out=0 | ||||
> else | ||||
Nicolas Dumazet
|
r11782 | > out=1 | ||
> fi | ||||
> if [ $3 -eq 0 ]; then | ||||
> df="same" | ||||
> else | ||||
> df="different" | ||||
> fi | ||||
> if [ $out -ne $3 ]; then | ||||
> echo "Error on $1 and $2, should be $df." | ||||
> fi | ||||
> } | ||||
Matt Mackall
|
r12328 | Assert flag1 flag2 [0-same | 1-different] | ||
Nicolas Dumazet
|
r11782 | |||
$ assert "-q" "-mard" 0 | ||||
$ assert "-A" "-marduicC" 0 | ||||
$ assert "-qA" "-mardcC" 0 | ||||
$ assert "-qAui" "-A" 0 | ||||
$ assert "-qAu" "-marducC" 0 | ||||
$ assert "-qAi" "-mardicC" 0 | ||||
$ assert "-qu" "-u" 0 | ||||
$ assert "-q" "-u" 1 | ||||
$ assert "-m" "-a" 1 | ||||
$ assert "-r" "-d" 1 | ||||
$ cd .. | ||||
$ hg init repo4 | ||||
$ cd repo4 | ||||
$ touch modified removed deleted | ||||
Martin Geisler
|
r12156 | $ hg ci -q -A -m 'initial checkin' | ||
Nicolas Dumazet
|
r11782 | $ touch added unknown | ||
$ hg add added | ||||
$ hg remove removed | ||||
$ rm deleted | ||||
$ echo x > modified | ||||
$ hg copy modified copied | ||||
$ hg ci -m 'test checkin' -d "1000001 0" | ||||
$ rm * | ||||
$ touch unrelated | ||||
$ hg ci -q -A -m 'unrelated checkin' -d "1000002 0" | ||||
hg status --change 1: | ||||
$ hg status --change 1 | ||||
M modified | ||||
A added | ||||
A copied | ||||
R removed | ||||
hg status --change 1 unrelated: | ||||
$ hg status --change 1 unrelated | ||||
hg status -C --change 1 added modified copied removed deleted: | ||||
$ hg status -C --change 1 added modified copied removed deleted | ||||
M modified | ||||
A added | ||||
A copied | ||||
modified | ||||
R removed | ||||
Patrick Mezard
|
r15578 | hg status -A --change 1 and revset: | ||
Nicolas Dumazet
|
r11782 | |||
Patrick Mezard
|
r15578 | $ hg status -A --change '1|1' | ||
Nicolas Dumazet
|
r11782 | M modified | ||
A added | ||||
A copied | ||||
modified | ||||
R removed | ||||
C deleted | ||||
Yuya Nishihara
|
r15848 | |||
$ cd .. | ||||
Martin von Zweigbergk
|
r27668 | hg status with --rev and reverted changes: | ||
$ hg init reverted-changes-repo | ||||
$ cd reverted-changes-repo | ||||
$ echo a > file | ||||
$ hg add file | ||||
$ hg ci -m a | ||||
$ echo b > file | ||||
$ hg ci -m b | ||||
reverted file should appear clean | ||||
$ hg revert -r 0 . | ||||
reverting file | ||||
$ hg status -A --rev 0 | ||||
C file | ||||
#if execbit | ||||
reverted file with changed flag should appear modified | ||||
$ chmod +x file | ||||
$ hg status -A --rev 0 | ||||
M file | ||||
Matt Harbison
|
r27743 | $ hg revert -r 0 . | ||
reverting file | ||||
Martin von Zweigbergk
|
r27749 | |||
reverted and committed file with changed flag should appear modified | ||||
$ hg co -C . | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ chmod +x file | ||||
$ hg ci -m 'change flag' | ||||
$ hg status -A --rev 1 --rev 2 | ||||
M file | ||||
$ hg diff -r 1 -r 2 | ||||
Martin von Zweigbergk
|
r27668 | #endif | ||
Ryan McElroy
|
r31423 | $ cd .. | ||
Yuya Nishihara
|
r15848 | hg status of binary file starting with '\1\n', a separator for metadata: | ||
$ hg init repo5 | ||||
$ cd repo5 | ||||
Pulkit Goyal
|
r38037 | >>> open("010a", r"wb").write(b"\1\nfoo") and None | ||
Yuya Nishihara
|
r15848 | $ hg ci -q -A -m 'initial checkin' | ||
$ hg status -A | ||||
C 010a | ||||
Pulkit Goyal
|
r38037 | >>> open("010a", r"wb").write(b"\1\nbar") and None | ||
Yuya Nishihara
|
r15848 | $ hg status -A | ||
M 010a | ||||
$ hg ci -q -m 'modify 010a' | ||||
$ hg status -A --rev 0:1 | ||||
M 010a | ||||
$ touch empty | ||||
$ hg ci -q -A -m 'add another file' | ||||
$ hg status -A --rev 1:2 010a | ||||
C 010a | ||||
FUJIWARA Katsunori
|
r16144 | |||
$ cd .. | ||||
test "hg status" with "directory pattern" which matches against files | ||||
only known on target revision. | ||||
$ hg init repo6 | ||||
$ cd repo6 | ||||
$ echo a > a.txt | ||||
$ hg add a.txt | ||||
$ hg commit -m '#0' | ||||
$ mkdir -p 1/2/3/4/5 | ||||
$ echo b > 1/2/3/4/5/b.txt | ||||
$ hg add 1/2/3/4/5/b.txt | ||||
$ hg commit -m '#1' | ||||
$ hg update -C 0 > /dev/null | ||||
$ hg status -A | ||||
C a.txt | ||||
the directory matching against specified pattern should be removed, | ||||
because directory existence prevents 'dirstate.walk()' from showing | ||||
warning message about such pattern. | ||||
$ test ! -d 1 | ||||
$ hg status -A --rev 1 1/2/3/4/5/b.txt | ||||
R 1/2/3/4/5/b.txt | ||||
$ hg status -A --rev 1 1/2/3/4/5 | ||||
R 1/2/3/4/5/b.txt | ||||
$ hg status -A --rev 1 1/2/3 | ||||
R 1/2/3/4/5/b.txt | ||||
$ hg status -A --rev 1 1 | ||||
R 1/2/3/4/5/b.txt | ||||
Matt Mackall
|
r22424 | $ hg status --config ui.formatdebug=True --rev 1 1 | ||
status = [ | ||||
{*'path': '1/2/3/4/5/b.txt'*}, (glob) | ||||
] | ||||
Patrick Mezard
|
r17377 | #if windows | ||
$ hg --config ui.slash=false status -A --rev 1 1 | ||||
R 1\2\3\4\5\b.txt | ||||
#endif | ||||
FUJIWARA Katsunori
|
r16144 | $ cd .. | ||
Pierre-Yves David
|
r23402 | |||
Status after move overwriting a file (issue4458) | ||||
================================================= | ||||
$ hg init issue4458 | ||||
$ cd issue4458 | ||||
$ echo a > a | ||||
$ echo b > b | ||||
$ hg commit -Am base | ||||
adding a | ||||
adding b | ||||
with --force | ||||
$ hg mv b --force a | ||||
$ hg st --copies | ||||
M a | ||||
b | ||||
R b | ||||
$ hg revert --all | ||||
reverting a | ||||
undeleting b | ||||
$ rm *.orig | ||||
without force | ||||
$ hg rm a | ||||
$ hg st --copies | ||||
R a | ||||
$ hg mv b a | ||||
$ hg st --copies | ||||
M a | ||||
b | ||||
R b | ||||
Mathias De Maré
|
r24663 | using ui.statuscopies setting | ||
$ hg st --config ui.statuscopies=true | ||||
M a | ||||
b | ||||
R b | ||||
$ hg st --config ui.statuscopies=false | ||||
M a | ||||
R b | ||||
Martin von Zweigbergk
|
r35066 | $ hg st --config ui.tweakdefaults=yes | ||
M a | ||||
b | ||||
R b | ||||
Mathias De Maré
|
r24663 | |||
Yuya Nishihara
|
r29000 | using log status template (issue5155) | ||
$ hg log -Tstatus -r 'wdir()' -C | ||||
changeset: 2147483647:ffffffffffff | ||||
parent: 0:8c55c58b4c0e | ||||
user: test | ||||
date: * (glob) | ||||
files: | ||||
M a | ||||
b | ||||
R b | ||||
Pierre-Yves David
|
r23402 | Other "bug" highlight, the revision status does not report the copy information. | ||
This is buggy behavior. | ||||
$ hg commit -m 'blah' | ||||
$ hg st --copies --change . | ||||
M a | ||||
R b | ||||
Yuya Nishihara
|
r29000 | using log status template, the copy information is displayed correctly. | ||
$ hg log -Tstatus -r. -C | ||||
changeset: 1:6685fde43d21 | ||||
tag: tip | ||||
user: test | ||||
date: * (glob) | ||||
summary: blah | ||||
files: | ||||
M a | ||||
b | ||||
R b | ||||
Pierre-Yves David
|
r23402 | $ cd .. | ||