Mercurial > hg
annotate tests/test-init @ 4531:b51a8138292a
Avoid extra filelogs entries.
Right now, there are some situations in which localrepo.filecommit can
create filelog entries even though they're not needed. For example:
- permissions for a file have changed;
- qrefresh can create a filelog entry identical to its parent (see the
added test);
- convert-repo creates extra filelog entries in every merge where the
first parent has added files (for example, changeset ebebe9577a1a of
the kernel repo added extra filelog entries to files in the
arch/blackfin directory, even though the merge should only touch the
drivers/ata directory). This makes "hg log file" in a converted repo
less useful than it could be, since it may mention many merges that
don't actually touch that specific file.
They all come from the same basic problem: localrepo.commit (through
filecommit) creates new filelog entries for all files passed to it
(except for some cases during a merge).
Patch and test case provided by Benoit.
This should fix issue351.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Sat, 09 Jun 2007 01:04:28 -0300 |
parents | 27590c19ad30 |
children | 671b3e1eac2e |
rev | line source |
---|---|
2599
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
1 #!/bin/sh |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
2 |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
3 # This test tries to exercise the ssh functionality with a dummy script |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
4 |
4297
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
5 cat <<EOF > dummyssh |
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
6 import sys |
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
7 import os |
2599
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
8 |
4297
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
9 os.chdir(os.path.dirname(sys.argv[0])) |
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
10 if sys.argv[1] != "user@dummy": |
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
11 sys.exit(-1) |
2599
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
12 |
4297
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
13 if not os.path.exists("dummyssh"): |
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
14 sys.exit(-1) |
2599
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
15 |
4297
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
16 log = open("dummylog", "ab") |
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
17 log.write("Got arguments") |
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
18 for i, arg in enumerate(sys.argv[1:]): |
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
19 log.write(" %d:%s" % (i+1, arg)) |
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
20 log.write("\n") |
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
21 log.close() |
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
22 r = os.system(sys.argv[2]) |
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
23 sys.exit(bool(r)) |
2599
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
24 EOF |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
25 |
4166
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
26 checknewrepo() |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
27 { |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
28 name=$1 |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
29 |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
30 if [ -d $name/.hg/store ]; then |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
31 echo store created |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
32 fi |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
33 |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
34 if [ -f $name/.hg/00changelog.i ]; then |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
35 echo 00changelog.i created |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
36 fi |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
37 |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
38 cat $name/.hg/requires |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
39 } |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
40 |
2599
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
41 echo "# creating 'local'" |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
42 hg init local |
4166
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
43 checknewrepo local |
2599
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
44 echo this > local/foo |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
45 hg ci --cwd local -A -m "init" -d "1000000 0" |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
46 |
4166
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
47 echo "# creating repo with old format" |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
48 hg --config format.usestore=false init old |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
49 checknewrepo old |
c0271aba6abe
small fixes for the parent patch
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
3713
diff
changeset
|
50 |
3037
3acb76f0124d
clone: simplifying dest repo creation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2599
diff
changeset
|
51 echo "#test failure" |
3acb76f0124d
clone: simplifying dest repo creation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2599
diff
changeset
|
52 hg init local |
3acb76f0124d
clone: simplifying dest repo creation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2599
diff
changeset
|
53 |
2599
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
54 echo "# init+push to remote2" |
4297
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
55 hg init -e "python ./dummyssh" ssh://user@dummy/remote2 |
2599
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
56 hg incoming -R remote2 local |
4297
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
57 hg push -R local -e "python ./dummyssh" ssh://user@dummy/remote2 |
2599
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
58 |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
59 echo "# clone to remote1" |
4297
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
60 hg clone -e "python ./dummyssh" local ssh://user@dummy/remote1 |
2599
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
61 |
3037
3acb76f0124d
clone: simplifying dest repo creation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2599
diff
changeset
|
62 echo "# init to existing repo" |
4297
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
63 hg init -e "python ./dummyssh" ssh://user@dummy/remote1 |
3037
3acb76f0124d
clone: simplifying dest repo creation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2599
diff
changeset
|
64 |
3acb76f0124d
clone: simplifying dest repo creation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2599
diff
changeset
|
65 echo "# clone to existing repo" |
4297
27590c19ad30
test-init: avoid a shell script
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4166
diff
changeset
|
66 hg clone -e "python ./dummyssh" local ssh://user@dummy/remote1 |
3037
3acb76f0124d
clone: simplifying dest repo creation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2599
diff
changeset
|
67 |
2599
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
68 echo "# output of dummyssh" |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
69 cat dummylog |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
70 |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
71 echo "# comparing repositories" |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
72 hg tip -q -R local |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
73 hg tip -q -R remote1 |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
74 hg tip -q -R remote2 |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
75 |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
76 echo "# check names for repositories (clashes with URL schemes, special chars)" |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
77 for i in bundle file hg http https old-http ssh static-http " " "with space"; do |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
78 echo "# hg init \"$i\"" |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
79 hg init "$i" |
3713
8ae88ed2a3b6
don't create the .hg/data at init time
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3037
diff
changeset
|
80 test -d "$i" -a -d "$i/.hg" && echo "ok" || echo "failed" |
2599
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
81 done |
e4b5e48052c6
Added tests for local and remote init.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
82 |