Move everything under .git
[svn-fe.git] / replay.sh
blob632bea95bf3a13c1555e4f681ee03cd1040d7f9b
1 #!/bin/bash
2 SVK_DEPOT=""
3 CO_DIR=validation
4 HASH_DIR=.git/wc
6 SVN_UUID=`svk pg --revprop -r0 svn:sync-from-uuid /$SVK_DEPOT/`
7 SVN_URL=`svk pg --revprop -r0 svn:sync-from-url /$SVK_DEPOT/`
8 MAX_REV=`svk pg --revprop -r0 svn:sync-last-merged-rev /$SVK_DEPOT/`
10 echo SVN_UUID: $SVN_UUID
11 echo SVN_URL: $SVN_URL
12 echo MAX_REV: $MAX_REV
14 svk co -r1 /$SVK_DEPOT/ $CO_DIR
15 cd $CO_DIR
16 git init
17 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}
18 for (( REV=1 ; REV<=MAX_REV ; ++REV )) do
19 svk up -r$REV
20 # Hashify working copy
21 git update-index --refresh 2>/dev/null
22 git ls-files -modz | tee .git/filelist | git update-index -z --add --replace --remove --stdin
23 xargs -0 git ls-files -s < .git/filelist | (
24 while read MODE HASH STAGE FILE ; do
25 HASH_FILE="$HASH_DIR/${HASH:0:2}/$HASH$MODE"
26 ln "$FILE" "$HASH_FILE" 2>/dev/null || \
27 ln -f "$HASH_FILE" "$FILE"
28 done
30 SVN_AUTHOR=`svk pg --revprop -r$REV svn:author`
31 SVN_DATE=`svk pg --revprop -r$REV svn:date`
32 export GIT_COMMITTER_NAME=$SVN_AUTHOR
33 export GIT_COMMITTER_EMAIL=$SVN_AUTHOR"@"$SVN_UUID
34 export GIT_COMMITTER_DATE="`date -juf '%FT%T' $SVN_DATE '+%F %T %z' 2>/dev/null`"
35 export GIT_AUTHOR_NAME="$GIT_COMMITTER_NAME"
36 export GIT_AUTHOR_EMAIL="$GIT_COMMITTER_EMAIL"
37 export GIT_AUTHOR_DATE="$GIT_COMMITTER_DATE"
38 GIT_PARENT=""
39 [ $REV -gt 1 ] && GIT_PARENT="-p `git show-ref --head -s HEAD`"
40 GIT_TREE=`git write-tree`
41 echo git commit-tree $GIT_TREE $GIT_PARENT
42 GIT_COMMIT=`svk pg --revprop -r$REV svn:log | git commit-tree $GIT_TREE $GIT_PARENT`
43 git update-ref HEAD $GIT_COMMIT
44 git tag $REV
45 git gc --auto
46 done