tests/test-rename-dir-merge
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
Sun, 23 Mar 2008 21:03:24 -0300
changeset 6370 6440e25a1ba3
parent 5567 56e9f7b2d8fa
child 8167 6c82beaaa11a
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:
3733
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     1
#!/bin/sh
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     2
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     3
mkdir t
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     4
cd t
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     5
hg init
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     6
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     7
mkdir a
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     8
echo foo > a/a
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     9
echo bar > a/b
5567
56e9f7b2d8fa rename: add test for moving untracked files in directories
Matt Mackall <mpm@selenic.com>
parents: 5229
diff changeset
    10
hg ci -Am "0" -d "0 0"
3733
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    11
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    12
hg co -C 0
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    13
hg mv a b
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    14
hg ci -m "1 mv a/ b/" -d "0 0"
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    15
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    16
hg co -C 0
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    17
echo baz > a/c
5567
56e9f7b2d8fa rename: add test for moving untracked files in directories
Matt Mackall <mpm@selenic.com>
parents: 5229
diff changeset
    18
echo quux > a/d
3733
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    19
hg add a/c
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    20
hg ci -m "2 add a/c" -d "0 0"
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    21
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    22
hg merge --debug 1
3748
7b88bd88f040 Fix test-rename-dir-merge for different implementations of ls.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3734
diff changeset
    23
echo a/* b/*
3733
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    24
hg st -C
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    25
hg ci -m "3 merge 2+1" -d "0 0"
5229
dee573ba79f1 correctly record file-level history when the local side renames a directory
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3748
diff changeset
    26
hg debugrename b/c
3733
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    27
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    28
hg co -C 1
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    29
hg merge --debug 2
3748
7b88bd88f040 Fix test-rename-dir-merge for different implementations of ls.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 3734
diff changeset
    30
echo a/* b/*
3733
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    31
hg st -C
9e67fecbfd16 merge: handle directory renames
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    32
hg ci -m "4 merge 1+2" -d "0 0"
5229
dee573ba79f1 correctly record file-level history when the local side renames a directory
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3748
diff changeset
    33
hg debugrename b/c