annotate tests/test-churn @ 11769:ca6cebd8734e stable

dirstate: ignore symlinks when fs cannot handle them (issue1888) When the filesystem cannot handle the executable bit, we currently ignore it completely when looking for modified files. Similarly, it is impossible to set or clear the bit when the filesystem ignores it. This patch makes Mercurial treat symbolic links the same way. Symlinks are a little different since they manifest themselves as small files containing a filename (the symlink target). On Windows, these files show up as regular files, and on Linux and Mac they show up as real symlinks. Issue1888 presents a case where the symlink files are better ignored from the Windows side. A Linux client creates symlinks in a working copy which is shared over a network between Linux and Windows clients. The Samba server is helpful and defererences the symlink when the Windows client looks at it. This means that Mercurial on the Windows side sees file content instead of a file name in the symlink, and hence flags the link as modified. Ignoring the change would be much more helpful, similarly to how Mercurial does not report any changes when executable bits are ignored in a checkout on Windows. An initial checkout of a symbolic link on a file system that cannot handle symbolic links will still result in a regular file containing the target file name as its content. Sharing such a checkout with a Linux client will not turn the file into a symlink automatically, but 'hg revert' can fix that. After the revert, the Windows client will see the correct file content (provided by the Samba server when it follows the link on the Linux side) and otherwise ignore the change. Running 'hg perfstatus' 10 times gives these results: Before: After: min: 0.544703 min: 0.546549 med: 0.547592 med: 0.548881 avg: 0.549146 avg: 0.548549 max: 0.564112 max: 0.551504 The median time is increased about 0.24%.
author Martin Geisler <mg@aragost.com>
date Mon, 09 Aug 2010 15:31:56 +0200
parents ffd85ab578be
children 2e7647d25458
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6348
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
1 #!/bin/sh
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
2
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
3 echo "[extensions]" >> $HGRCPATH
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
4 echo "churn=" >> $HGRCPATH
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
5
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
6 echo % create test repository
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
7 hg init repo
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
8 cd repo
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
9 echo a > a
7070
2627ef59195d churn and stats commands merged
Alexander Solovyov <piranha@piranha.org.ua>
parents: 6449
diff changeset
10 hg ci -Am adda -u user1 -d 6:00
6348
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
11 echo b >> a
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
12 echo b > b
7070
2627ef59195d churn and stats commands merged
Alexander Solovyov <piranha@piranha.org.ua>
parents: 6449
diff changeset
13 hg ci -m changeba -u user2 -d 9:00 a
2627ef59195d churn and stats commands merged
Alexander Solovyov <piranha@piranha.org.ua>
parents: 6449
diff changeset
14 hg ci -Am addb -u user2 -d 9:30
6348
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
15 echo c >> a
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
16 echo c >> b
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
17 echo c > c
7070
2627ef59195d churn and stats commands merged
Alexander Solovyov <piranha@piranha.org.ua>
parents: 6449
diff changeset
18 hg ci -m changeca -u user3 -d 12:00 a
2627ef59195d churn and stats commands merged
Alexander Solovyov <piranha@piranha.org.ua>
parents: 6449
diff changeset
19 hg ci -m changecb -u user3 -d 12:15 b
2627ef59195d churn and stats commands merged
Alexander Solovyov <piranha@piranha.org.ua>
parents: 6449
diff changeset
20 hg ci -Am addc -u user3 -d 12:30
7870
7bcce39e8f07 Returns lines changed for paths specified as arguments correctly.
madhu@madhu
parents: 7070
diff changeset
21 mkdir -p d/e
7bcce39e8f07 Returns lines changed for paths specified as arguments correctly.
madhu@madhu
parents: 7070
diff changeset
22 echo abc > d/e/f1.txt
7bcce39e8f07 Returns lines changed for paths specified as arguments correctly.
madhu@madhu
parents: 7070
diff changeset
23 hg ci -Am "add d/e/f1.txt" -u user1 -d 12:45 d/e/f1.txt
7bcce39e8f07 Returns lines changed for paths specified as arguments correctly.
madhu@madhu
parents: 7070
diff changeset
24 mkdir -p d/g
7bcce39e8f07 Returns lines changed for paths specified as arguments correctly.
madhu@madhu
parents: 7070
diff changeset
25 echo def > d/g/f2.txt
7bcce39e8f07 Returns lines changed for paths specified as arguments correctly.
madhu@madhu
parents: 7070
diff changeset
26 hg ci -Am "add d/g/f2.txt" -u user1 -d 13:00 d/g/f2.txt
6348
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
27
7870
7bcce39e8f07 Returns lines changed for paths specified as arguments correctly.
madhu@madhu
parents: 7070
diff changeset
28 echo % churn separate directories
9321
d7b6429c5ad4 churn: correct output when run in subdirectories
Brendan Cully <brendan@kublai.com>
parents: 8254
diff changeset
29 cd d
d7b6429c5ad4 churn: correct output when run in subdirectories
Brendan Cully <brendan@kublai.com>
parents: 8254
diff changeset
30 hg churn e
6348
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
31 echo % churn all
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
32 hg churn
11265
ffd85ab578be churn: add possibility to include/exclude paths
Alexander Solovyov <piranha@piranha.org.ua>
parents: 11264
diff changeset
33 echo % churn excluding one dir
ffd85ab578be churn: add possibility to include/exclude paths
Alexander Solovyov <piranha@piranha.org.ua>
parents: 11264
diff changeset
34 hg churn -X e
7070
2627ef59195d churn and stats commands merged
Alexander Solovyov <piranha@piranha.org.ua>
parents: 6449
diff changeset
35 echo % churn up to rev 2
2627ef59195d churn and stats commands merged
Alexander Solovyov <piranha@piranha.org.ua>
parents: 6449
diff changeset
36 hg churn -r :2
9321
d7b6429c5ad4 churn: correct output when run in subdirectories
Brendan Cully <brendan@kublai.com>
parents: 8254
diff changeset
37 cd ..
6348
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
38 echo % churn with aliases
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
39 cat > ../aliases <<EOF
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
40 user1 alias1
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
41 user3 alias3
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
42 EOF
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
43 hg churn --aliases ../aliases
8254
f108e89400d8 churn: use .hgchurn in repo root as default map file
Martin Geisler <mg@lazybytes.net>
parents: 7870
diff changeset
44 echo % churn with .hgchurn
f108e89400d8 churn: use .hgchurn in repo root as default map file
Martin Geisler <mg@lazybytes.net>
parents: 7870
diff changeset
45 mv ../aliases .hgchurn
f108e89400d8 churn: use .hgchurn in repo root as default map file
Martin Geisler <mg@lazybytes.net>
parents: 7870
diff changeset
46 hg churn
f108e89400d8 churn: use .hgchurn in repo root as default map file
Martin Geisler <mg@lazybytes.net>
parents: 7870
diff changeset
47 rm .hgchurn
6348
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
48 echo % churn with column specifier
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
49 COLUMNS=40 hg churn
7070
2627ef59195d churn and stats commands merged
Alexander Solovyov <piranha@piranha.org.ua>
parents: 6449
diff changeset
50 echo % churn by hour
2627ef59195d churn and stats commands merged
Alexander Solovyov <piranha@piranha.org.ua>
parents: 6449
diff changeset
51 hg churn -f '%H' -s
6348
f8feaa665319 Make churn an official extension
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
52
9669
9b127e888640 churn: ability to display added/removed lines separately
Alexander Solovyov <piranha@piranha.org.ua>
parents: 9389
diff changeset
53 echo % churn with separated added/removed lines
9b127e888640 churn: ability to display added/removed lines separately
Alexander Solovyov <piranha@piranha.org.ua>
parents: 9389
diff changeset
54 hg rm d/g/f2.txt
9b127e888640 churn: ability to display added/removed lines separately
Alexander Solovyov <piranha@piranha.org.ua>
parents: 9389
diff changeset
55 hg ci -Am "removed d/g/f2.txt" -u user1 -d 14:00 d/g/f2.txt
9b127e888640 churn: ability to display added/removed lines separately
Alexander Solovyov <piranha@piranha.org.ua>
parents: 9389
diff changeset
56 hg churn --diffstat
10826
717c35d55fb3 color: colorize based on output labels instead of parsing output
Brodie Rao <brodie@bitheap.org>
parents: 9913
diff changeset
57 echo % churn --diffstat with color
11141
df5d1d571d27 tests: force color ansi mode on Windows
Patrick Mezard <pmezard@gmail.com>
parents: 10826
diff changeset
58 hg --config extensions.color= churn --config color.mode=ansi \
df5d1d571d27 tests: force color ansi mode on Windows
Patrick Mezard <pmezard@gmail.com>
parents: 10826
diff changeset
59 --diffstat --color=always
9669
9b127e888640 churn: ability to display added/removed lines separately
Alexander Solovyov <piranha@piranha.org.ua>
parents: 9389
diff changeset
60
9670
7d56b6ffef72 churn: fix changeset count (broken by 9b127e888640)
Alexander Solovyov <piranha@piranha.org.ua>
parents: 9669
diff changeset
61 echo % changeset number churn
7d56b6ffef72 churn: fix changeset count (broken by 9b127e888640)
Alexander Solovyov <piranha@piranha.org.ua>
parents: 9669
diff changeset
62 hg churn -c
7d56b6ffef72 churn: fix changeset count (broken by 9b127e888640)
Alexander Solovyov <piranha@piranha.org.ua>
parents: 9669
diff changeset
63
11264
30c620e48d1c churn: support spaces in aliases (issue2222)
Alexander Solovyov <piranha@piranha.org.ua>
parents: 11141
diff changeset
64 echo 'with space = no-space' >> ../aliases
30c620e48d1c churn: support spaces in aliases (issue2222)
Alexander Solovyov <piranha@piranha.org.ua>
parents: 11141
diff changeset
65 echo a >> a
30c620e48d1c churn: support spaces in aliases (issue2222)
Alexander Solovyov <piranha@piranha.org.ua>
parents: 11141
diff changeset
66 hg commit -m a -u 'with space' -d 15:00
30c620e48d1c churn: support spaces in aliases (issue2222)
Alexander Solovyov <piranha@piranha.org.ua>
parents: 11141
diff changeset
67 echo % churn with space in alias
30c620e48d1c churn: support spaces in aliases (issue2222)
Alexander Solovyov <piranha@piranha.org.ua>
parents: 11141
diff changeset
68 hg churn --aliases ../aliases -r tip
30c620e48d1c churn: support spaces in aliases (issue2222)
Alexander Solovyov <piranha@piranha.org.ua>
parents: 11141
diff changeset
69
9388
f7968bba2307 churn: issue833 was reintroduced in 9bc46d069a76, correct it and add a test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8254
diff changeset
70 cd ..
f7968bba2307 churn: issue833 was reintroduced in 9bc46d069a76, correct it and add a test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8254
diff changeset
71
f7968bba2307 churn: issue833 was reintroduced in 9bc46d069a76, correct it and add a test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8254
diff changeset
72 # issue 833: ZeroDivisionError
f7968bba2307 churn: issue833 was reintroduced in 9bc46d069a76, correct it and add a test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8254
diff changeset
73 hg init issue-833
f7968bba2307 churn: issue833 was reintroduced in 9bc46d069a76, correct it and add a test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8254
diff changeset
74 cd issue-833
f7968bba2307 churn: issue833 was reintroduced in 9bc46d069a76, correct it and add a test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8254
diff changeset
75 touch foo
f7968bba2307 churn: issue833 was reintroduced in 9bc46d069a76, correct it and add a test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8254
diff changeset
76 hg ci -Am foo
f7968bba2307 churn: issue833 was reintroduced in 9bc46d069a76, correct it and add a test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8254
diff changeset
77 # this was failing with a ZeroDivisionError
f7968bba2307 churn: issue833 was reintroduced in 9bc46d069a76, correct it and add a test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8254
diff changeset
78 hg churn
f7968bba2307 churn: issue833 was reintroduced in 9bc46d069a76, correct it and add a test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 8254
diff changeset
79 cd ..