tests/test-pull-pull-corruption2
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
Sun, 23 Mar 2008 21:03:24 -0300
changeset 6370 6440e25a1ba3
parent 2530 d181845bdc51
permissions -rwxr-xr-x
localrepo.commit: grab locks before getting the list of files to commit Somebody may change the dirstate after we've determined the parents of the working dir and run repo.status, but before we called wlock(). This should also fix issue997, where backout would change a file without changing its size and then call repo.commit without passing the list of files. If this happened in less than one second, we wouldn't detect any file changes - the in-memory dirstate still has the cached stat data for that file. Grabbing the wlock early causes the dirstate to be invalidated and we end up reading the dirstate file again, which has that file marked for lookup (size == -1). A better fix would be for backout to give repo.commit the exact list of files, but that'll require some changes to the revert operation. A significant user-visible change is that the precommit hook is always run with both locks grabbed - previously, hg commit would run it before grabbing any locks, but hg import would run it after grabbing locks.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2000
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
     1
#!/bin/sh
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
     2
#
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
     3
# Corrupt an hg repo with two pulls.
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
     4
#
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
     5
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
     6
# create one repo with a long history
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
     7
hg init source1
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
     8
cd source1
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
     9
touch foo
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    10
hg add foo
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    11
for i in 1 2 3 4 5 6 7 8 9 10; do
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    12
    echo $i >> foo
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    13
    hg ci -m $i
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    14
done
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    15
cd ..
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    16
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    17
# create a third repo to pull both other repos into it
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    18
hg init version2
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    19
hg -R version2 pull source1 &
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    20
sleep 1
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    21
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    22
hg clone --pull -U version2 corrupted
2530
d181845bdc51 Wait for first pull to be completed before doing verify.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2000
diff changeset
    23
wait
2000
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    24
hg -R corrupted verify
6f6e210b38cf add benoit's test for issue148.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
    25
hg -R version2 verify