##// END OF EJS Templates
update: teach hg to override untracked dir with a tracked file on update...
update: teach hg to override untracked dir with a tracked file on update This is a fix to an old problem when Mercurial got confused by an untracked folder with the same name as one of the files in a commit hg was trying to update to. It is pretty safe to remove this folder if it is empty. Backing up an empty folder seems to go against Mercurial's "don't track dirs" philosophy.

File last commit:

r29000:2d3837a4 stable
r29480:1e4512ea default
Show More
test-status.t
549 lines | 9.5 KiB | text/troff | Tads3Lexer
Nicolas Dumazet
tests: unify test-status
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
match: fix root calculation for combining regexps with simple paths...
r19107
combining patterns with root and patterns without a root works
$ hg st a/in_a re:.*b$
? a/in_a
? b/in_b
Nicolas Dumazet
tests: unify test-status
r11782 $ cd ..
$ hg init repo2
$ cd repo2
$ touch modified removed deleted ignored
$ echo "^ignored$" > .hgignore
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg ci -A -m 'initial checkin'
Nicolas Dumazet
tests: unify test-status
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
tests: hide 'No such file or directory' messages...
r15521 never-existed: * (glob)
Nicolas Dumazet
tests: unify test-status
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
Matt Mackall
commands: add hidden -T option for files/manifest/status/tags...
r22429 $ hg status -A -Tjson
[
{
"path": "added",
"status": "A"
},
{
"copy": "modified",
"path": "copied",
"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
tests: unify test-status
r11782
Matt Mackall
formatter: add pickle format...
r22430 $ hg status -A -Tpickle > pickle
>>> import pickle
>>> print sorted((x['status'], x['path']) for x in pickle.load(open("pickle")))
[('!', 'deleted'), ('?', 'pickle'), ('?', 'unknown'), ('A', 'added'), ('A', 'copied'), ('C', '.hgignore'), ('C', 'modified'), ('I', 'ignored'), ('R', 'removed')]
$ rm pickle
Nicolas Dumazet
tests: unify test-status
r11782 $ echo "^ignoreddir$" > .hgignore
$ mkdir ignoreddir
$ touch ignoreddir/file
Matt Mackall
tests: test basic template support for status
r25515 Test templater support:
$ hg status -AT "[{status}]\t{if(copy, '{copy} -> ')}{path}\n"
[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
tests: unify test-status
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
tests: fix a bunch of pointless #s in unified tests
r12328 Check 'status -q' and some combinations
Nicolas Dumazet
tests: unify test-status
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
revset: add wdir() function to specify workingctx revision by command...
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
tests: fix a bunch of pointless #s in unified tests
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
tests: unify test-status
r11782
$ assert() {
Matt Mackall
tests: cleanup exit code handling in unified tests
r12365 > hg status $1 > ../a
> hg status $2 > ../b
> if diff ../a ../b > /dev/null; then
> out=0
> else
Nicolas Dumazet
tests: unify test-status
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
tests: fix a bunch of pointless #s in unified tests
r12328 Assert flag1 flag2 [0-same | 1-different]
Nicolas Dumazet
tests: unify test-status
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
tests: remove unneeded -d flags...
r12156 $ hg ci -q -A -m 'initial checkin'
Nicolas Dumazet
tests: unify test-status
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
status: support revsets with --change
r15578 hg status -A --change 1 and revset:
Nicolas Dumazet
tests: unify test-status
r11782
Patrick Mezard
status: support revsets with --change
r15578 $ hg status -A --change '1|1'
Nicolas Dumazet
tests: unify test-status
r11782 M modified
A added
A copied
modified
R removed
C deleted
Yuya Nishihara
filectx: fix cmp() of file starting with '\1\n'...
r15848
$ cd ..
Martin von Zweigbergk
status: revert + flag-change == modified...
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
test-status: stabilize for no-execbit platforms...
r27743 $ hg revert -r 0 .
reverting file
Martin von Zweigbergk
context: check for differing flags a little earlier...
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
status: revert + flag-change == modified...
r27668 #endif
Yuya Nishihara
filectx: fix cmp() of file starting with '\1\n'...
r15848 hg status of binary file starting with '\1\n', a separator for metadata:
$ hg init repo5
$ cd repo5
Jim Hague
tests: tighten checks for octal escapes in shell printf....
r16098 >>> open("010a", "wb").write("\1\nfoo")
Yuya Nishihara
filectx: fix cmp() of file starting with '\1\n'...
r15848 $ hg ci -q -A -m 'initial checkin'
$ hg status -A
C 010a
Jim Hague
tests: tighten checks for octal escapes in shell printf....
r16098 >>> open("010a", "wb").write("\1\nbar")
Yuya Nishihara
filectx: fix cmp() of file starting with '\1\n'...
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
localrepository: use 'changectx.dirs()' in 'status()' for directory patterns...
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
formatter: make debug style match Python syntax
r22424 $ hg status --config ui.formatdebug=True --rev 1 1
status = [
{*'path': '1/2/3/4/5/b.txt'*}, (glob)
]
Patrick Mezard
test-status.t: test ui.slash on Windows
r17377 #if windows
$ hg --config ui.slash=false status -A --rev 1 1
R 1\2\3\4\5\b.txt
#endif
FUJIWARA Katsunori
localrepository: use 'changectx.dirs()' in 'status()' for directory patterns...
r16144 $ cd ..
Pierre-Yves David
rename: properly report removed and added file as modified (issue4458)...
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é
commands: add ui.statuscopies config knob...
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
Yuya Nishihara
log: fix status template to list copy source per dest (issue5155)...
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
rename: properly report removed and added file as modified (issue4458)...
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
log: fix status template to list copy source per dest (issue5155)...
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
rename: properly report removed and added file as modified (issue4458)...
r23402 $ cd ..