tests/svn/svndump-move.sh
author Siddharth Agarwal <sid0@fb.com>
Tue, 31 Mar 2015 19:29:39 -0700
changeset 24560 b38bcf18993c
parent 11124 55abde5cba43
permissions -rwxr-xr-x
dirstate.walk: don't keep track of normalized files in parallel Rev 2bb13f2b778c changed the semantics of the work list to store (normalized, non-normalized) pairs. All the tuple creation and destruction hurts perf: on a large repo on OS X, 'hg status' went from 3.62 seconds to 3.78. It also is unnecessary in most cases: - it is clearly unnecessary on case-sensitive filesystems. - it is also unnecessary when filenames have been read off of disk rather than being supplied by the user. The only case where the non-normalized case is required at all is when the file is unknown. To eliminate most of the perf cost, keep trace of whether the directory needs to be normalized at all with a boolean called 'alreadynormed'. Pay the cost of directory normalization only when necessary. For the above large repo, 'hg status' goes to 3.63 seconds.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7475
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     1
#!/bin/sh
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     2
#
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     3
# Use this script to generate move.svndump
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     4
#
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     5
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     6
mkdir temp
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     7
cd temp
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     8
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     9
mkdir project-orig
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    10
cd project-orig
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    11
mkdir trunk
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    12
echo a > trunk/a
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    13
mkdir trunk/d1
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    14
mkdir trunk/d2
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    15
echo b > trunk/d1/b
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    16
echo c > trunk/d1/c
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    17
echo d > trunk/d2/d
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    18
cd ..
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    19
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    20
svnadmin create svn-repo
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    21
svnurl=file://`pwd`/svn-repo
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    22
svn import project-orig $svnurl -m "init projA"
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    23
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    24
svn co $svnurl project
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    25
cd project
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    26
# Build a module renaming chain which used to confuse the converter.
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    27
# Update svn repository
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    28
echo a >> trunk/a
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    29
echo c >> trunk/d1/c
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    30
svn ci -m commitbeforemove
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    31
svn mv $svnurl/trunk $svnurl/subproject -m movedtrunk
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    32
svn up
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    33
mkdir subproject/trunk
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    34
svn add subproject/trunk
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    35
svn ci -m createtrunk
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    36
mkdir subproject/branches
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    37
svn add subproject/branches
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    38
svn ci -m createbranches
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    39
svn mv $svnurl/subproject/d1 $svnurl/subproject/trunk/d1 -m moved1
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    40
svn mv $svnurl/subproject/d2 $svnurl/subproject/trunk/d2 -m moved2
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    41
svn up
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    42
echo b >> subproject/trunk/d1/b
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    43
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    44
svn rm subproject/trunk/d2
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    45
svn ci -m "changeb and rm d2"
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    46
svn mv $svnurl/subproject/trunk/d1 $svnurl/subproject/branches/d1 -m moved1again
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    47
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    48
if svn help copy | grep 'SRC\[@REV\]' > /dev/null 2>&1; then
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    49
    # SVN >= 1.5 replaced the -r REV syntax with @REV
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    50
    # Copy a file from a past revision
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    51
    svn copy $svnurl/subproject/trunk/d2/d@7 $svnurl/subproject/trunk -m copyfilefrompast
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    52
    # Copy a directory from a past revision
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    53
    svn copy $svnurl/subproject/trunk/d2@7 $svnurl/subproject/trunk -m copydirfrompast
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    54
else
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    55
    # Copy a file from a past revision
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    56
    svn copy -r 7 $svnurl/subproject/trunk/d2/d $svnurl/subproject/trunk -m copyfilefrompast
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    57
    # Copy a directory from a past revision
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    58
    svn copy -r 7 $svnurl/subproject/trunk/d2 $svnurl/subproject/trunk -m copydirfrompast
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    59
fi
8884
8b603c7c808e convert/svn: remove dead code from entry deletion code path
Patrick Mezard <pmezard@gmail.com>
parents: 7475
diff changeset
    60
8b603c7c808e convert/svn: remove dead code from entry deletion code path
Patrick Mezard <pmezard@gmail.com>
parents: 7475
diff changeset
    61
# Copy a directory while removing a subdirectory
8b603c7c808e convert/svn: remove dead code from entry deletion code path
Patrick Mezard <pmezard@gmail.com>
parents: 7475
diff changeset
    62
svn up
8b603c7c808e convert/svn: remove dead code from entry deletion code path
Patrick Mezard <pmezard@gmail.com>
parents: 7475
diff changeset
    63
mkdir -p subproject/trunk/d3/d31
8b603c7c808e convert/svn: remove dead code from entry deletion code path
Patrick Mezard <pmezard@gmail.com>
parents: 7475
diff changeset
    64
echo e > subproject/trunk/d3/d31/e
8b603c7c808e convert/svn: remove dead code from entry deletion code path
Patrick Mezard <pmezard@gmail.com>
parents: 7475
diff changeset
    65
echo f > subproject/trunk/d3/f
8b603c7c808e convert/svn: remove dead code from entry deletion code path
Patrick Mezard <pmezard@gmail.com>
parents: 7475
diff changeset
    66
svn add subproject/trunk/d3
8b603c7c808e convert/svn: remove dead code from entry deletion code path
Patrick Mezard <pmezard@gmail.com>
parents: 7475
diff changeset
    67
svn ci -m "add d3"
8b603c7c808e convert/svn: remove dead code from entry deletion code path
Patrick Mezard <pmezard@gmail.com>
parents: 7475
diff changeset
    68
svn copy subproject/trunk/d3 subproject/trunk/d4
8b603c7c808e convert/svn: remove dead code from entry deletion code path
Patrick Mezard <pmezard@gmail.com>
parents: 7475
diff changeset
    69
svn rm subproject/trunk/d3/d31
8b603c7c808e convert/svn: remove dead code from entry deletion code path
Patrick Mezard <pmezard@gmail.com>
parents: 7475
diff changeset
    70
svn ci -m "copy dir and remove subdir"
11124
55abde5cba43 test-convert-svn-move: test moved dirs copy records
Patrick Mezard <pmezard@gmail.com>
parents: 8884
diff changeset
    71
55abde5cba43 test-convert-svn-move: test moved dirs copy records
Patrick Mezard <pmezard@gmail.com>
parents: 8884
diff changeset
    72
# Test directory moves
55abde5cba43 test-convert-svn-move: test moved dirs copy records
Patrick Mezard <pmezard@gmail.com>
parents: 8884
diff changeset
    73
svn up
55abde5cba43 test-convert-svn-move: test moved dirs copy records
Patrick Mezard <pmezard@gmail.com>
parents: 8884
diff changeset
    74
mkdir -p subproject/trunk/d4old
55abde5cba43 test-convert-svn-move: test moved dirs copy records
Patrick Mezard <pmezard@gmail.com>
parents: 8884
diff changeset
    75
echo g > subproject/trunk/d4old/g
55abde5cba43 test-convert-svn-move: test moved dirs copy records
Patrick Mezard <pmezard@gmail.com>
parents: 8884
diff changeset
    76
svn add subproject/trunk/d4old
55abde5cba43 test-convert-svn-move: test moved dirs copy records
Patrick Mezard <pmezard@gmail.com>
parents: 8884
diff changeset
    77
svn ci -m "add d4old"
55abde5cba43 test-convert-svn-move: test moved dirs copy records
Patrick Mezard <pmezard@gmail.com>
parents: 8884
diff changeset
    78
svn mv subproject/trunk/d4old subproject/trunk/d4new
55abde5cba43 test-convert-svn-move: test moved dirs copy records
Patrick Mezard <pmezard@gmail.com>
parents: 8884
diff changeset
    79
svn ci -m "rename d4old into d4new"
55abde5cba43 test-convert-svn-move: test moved dirs copy records
Patrick Mezard <pmezard@gmail.com>
parents: 8884
diff changeset
    80
7475
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    81
cd ..
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    82
90d8dfb481e7 Rewrite svn tests using svndump
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    83
svnadmin dump svn-repo > ../move.svndump