Resolved memory haemorrhage in perl replay implementation.
[svn-fe.git] / validate.sh
blob89f2f4508a269ba8ebe5ac8ee93cf67f987a7850
1 #!/bin/bash
2 SVK_DEPOT=""
3 URL="example.com"
4 CO_DIR=validation
5 HASH_DIR=hashes
6 MAX_REV=23000
8 svk co -r1 /$SVK_DEPOT/ $CO_DIR
9 ( cd $CO_DIR ;
10 git init
11 svk admin dump /$SVK_DEPOT/ | \
12 ../svn-dump-fast-export | \
13 git fast-import --force --export-marks=../marks.txt
15 mkdir -p $HASH_DIR/{0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f}{0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f}
16 cat marks.txt | (
17 for (( REV=1 ; REV<=MAX_REV ; ++REV )) do
18 read COMMIT_MARK COMMIT_HASH
19 echo $COMMIT_MARK $COMMIT_HASH
20 [ $REV -lt 5 ] && continue
21 svk up -r$REV $CO_DIR
22 # Hashify working copy
23 ( cd $CO_DIR ; git update-index --refresh ) >/dev/null
24 ( cd $CO_DIR ; git ls-files -moz | xargs -0 shasum ) \
25 2>/dev/null | (
26 while read HASH FILE ; do
27 FILE="$CO_DIR/$FILE"
28 [ -f "$FILE" ] || continue
29 [ -x "$FILE" ] && HASH="$HASH"x
30 HASH_FILE="$HASH_DIR/${HASH:0:2}/$HASH"
31 ln "$FILE" "$HASH_FILE" 2>/dev/null || \
32 ln -f "$HASH_FILE" "$FILE"
33 done
35 ( cd $CO_DIR ;
36 git update-index --refresh >/dev/null
37 git ls-files -dz | xargs -0 git update-index --info-only --remove
38 git ls-files -moz | xargs -0 git update-index --info-only --add --replace
39 MISMATCH=`git reset $COMMIT_HASH | wc -l`
40 [ $MISMATCH -gt 0 ] && echo MISMATCHES: $MISMATCH && exit 1
41 exit 0
42 ) || exit 1
43 done