##// END OF EJS Templates
diffstat: fix parsing of filenames with spaces...
diffstat: fix parsing of filenames with spaces The patch changes the output of "hg diff --stat" when one file whose filename has spaces has changed, making it get the full filename instead of just the substring between the last space and the end of the filename. It also changes the diffstat generated by "hg email -d" when one of the commit messages starts with "diff". Because of the regex used to parse the filename, the diffstat generated by "hg email -d" will still be not correct if a commit message starts with "diff -r ". Before the patch Mercurial has the following behavior: $ echo "foobar">"file with spaces" $ hg add "file with spaces" $ hg diff --stat spaces | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) $ hg diff --git --stat file with spaces | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) After the patch: $ echo "foobar">"file with spaces" $ hg add "file with spaces" $ hg diff --stat file with spaces | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) $ hg diff --git --stat file with spaces | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) Before the patch: $ hg add mercurial/patch.py tests/tests-diffstat.t $ hg commit -m "diffstat: fix parsing of filenames" $ hg email -d --test tip This patch series consists of 1 patches. diffstat: fix parsing of filenames [...] filenames | 0 mercurial/patch.py | 6 ++++-- tests/test-diffstat.t | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) [...] After the patch: $ hg email -d --test tip This patch series consists of 1 patches. diffstat: fix parsing of filenames [...] mercurial/patch.py | 6 ++++-- tests/test-diffstat.t | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) [...]

File last commit:

r12365:22f3353b default
r13395:104c9ed9 default
Show More
test-remove.t
256 lines | 4.8 KiB | text/troff | Tads3Lexer
Nicolas Dumazet
tests: unify test-remove
r12099 $ remove() {
> hg rm $@
Matt Mackall
tests: cleanup exit code handling in unified tests
r12365 > echo "exit code: $?" # no-check-code
Nicolas Dumazet
tests: unify test-remove
r12099 > hg st
> # do not use ls -R, which recurses in .hg subdirs on Mac OS X 10.5
> find . -name .hg -prune -o -type f -print | sort
> hg up -C
> }
$ hg init a
$ cd a
$ echo a > foo
file not managed
$ remove foo
not removing foo: file is untracked
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
r12099 ? foo
./foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg add foo
$ hg commit -m1
the table cases
00 state added, options none
$ echo b > bar
$ hg add bar
$ remove bar
not removing bar: file has been marked for add (use -f to force removal)
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
r12099 A bar
./bar
./foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
01 state clean, options none
$ remove foo
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
? bar
./bar
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
02 state modified, options none
$ echo b >> foo
$ remove foo
not removing foo: file is modified (use -f to force removal)
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
r12099 M foo
? bar
./bar
./foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
03 state missing, options none
$ rm foo
$ remove foo
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
? bar
./bar
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
10 state added, options -f
$ echo b > bar
$ hg add bar
$ remove -f bar
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 ? bar
./bar
./foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm bar
11 state clean, options -f
$ remove -f foo
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
12 state modified, options -f
$ echo b >> foo
$ remove -f foo
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
13 state missing, options -f
$ rm foo
$ remove -f foo
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
20 state added, options -A
$ echo b > bar
$ hg add bar
$ remove -A bar
not removing bar: file still exists (use -f to force removal)
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
r12099 A bar
./bar
./foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
21 state clean, options -A
$ remove -A foo
not removing foo: file still exists (use -f to force removal)
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
r12099 ? bar
./bar
./foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
22 state modified, options -A
$ echo b >> foo
$ remove -A foo
not removing foo: file still exists (use -f to force removal)
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
r12099 M foo
? bar
./bar
./foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
23 state missing, options -A
$ rm foo
$ remove -A foo
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
? bar
./bar
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
30 state added, options -Af
$ echo b > bar
$ hg add bar
$ remove -Af bar
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 ? bar
./bar
./foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm bar
31 state clean, options -Af
$ remove -Af foo
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
./foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
32 state modified, options -Af
$ echo b >> foo
$ remove -Af foo
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
./foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
33 state missing, options -Af
$ rm foo
$ remove -Af foo
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
test some directory stuff
$ mkdir test
$ echo a > test/foo
$ echo b > test/bar
$ hg ci -Am2
adding test/bar
adding test/foo
dir, options none
$ rm test/bar
$ remove test
removing test/bar
removing test/foo
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R test/bar
R test/foo
./foo
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
dir, options -f
$ rm test/bar
$ remove -f test
removing test/bar
removing test/foo
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R test/bar
R test/foo
./foo
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
dir, options -A
$ rm test/bar
$ remove -A test
not removing test/foo: file still exists (use -f to force removal)
removing test/bar
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
r12099 R test/bar
./foo
./test/foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
dir, options -Af
$ rm test/bar
$ remove -Af test
removing test/bar
removing test/foo
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R test/bar
R test/foo
./foo
./test/foo
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
test remove dropping empty trees (issue1861)
$ mkdir -p issue1861/b/c
$ echo x > issue1861/x
$ echo y > issue1861/b/c/y
$ hg ci -Am add
adding issue1861/b/c/y
adding issue1861/x
$ hg rm issue1861/b
removing issue1861/b/c/y
$ hg ci -m remove
$ ls issue1861
x