1 |
#!/bin/sh -x |
2 |
|
3 |
dir=/dev/shm |
4 |
test -e $dir || dir=/tmp/ |
5 |
|
6 |
svn_rep=$dir/test-svn-rep/ |
7 |
svn_co=$dir/test-svn-co/ |
8 |
cvs_rep=$dir/test-cvs-rep/ |
9 |
cvs_co=$dir/test-cvs-co/ |
10 |
|
11 |
test -d $svn_rep && rm -Rf $svn_rep |
12 |
test -d $svn_co && rm -Rf $svn_co |
13 |
test -d $cvs_rep && rm -Rf $cvs_rep |
14 |
test -d $cvs_co && rm -Rf $cvs_co |
15 |
|
16 |
svnadmin create $svn_rep || exit |
17 |
mkdir $svn_co || exit |
18 |
svn import -m "initial import" $svn_co file://$svn_rep || exit |
19 |
rm -Rf $svn_co || exit |
20 |
svn co file://$svn_rep $svn_co || exit |
21 |
mkdir $svn_co/dir || exit |
22 |
svn add $svn_co/dir || exit |
23 |
svn commit -m "dir" $svn_co/dir || exit |
24 |
|
25 |
mkdir "$svn_co/dir/with space" || exit |
26 |
svn add "$svn_co/dir/with space" || exit |
27 |
svn commit -m "dir with space" "$svn_co/dir/with space" || exit |
28 |
|
29 |
ps ax > $svn_co/dir/file || exit |
30 |
ps ax > "$svn_co/dir/file with spaces" || exit |
31 |
svn add $svn_co/dir/file "$svn_co/dir/file with spaces" || exit |
32 |
svn commit -m "files" $svn_co || exit |
33 |
|
34 |
svn rm $svn_co/dir/file || exit |
35 |
svn rm "$svn_co/dir/file with spaces" || exit |
36 |
svn commit -m "delete files" $svn_co || exit |
37 |
|
38 |
export CVSROOT=$cvs_rep |
39 |
|
40 |
mkdir $cvs_rep || exit |
41 |
cvs -f init || exit |
42 |
mkdir $cvs_co || exit |
43 |
cd $cvs_co || exit |
44 |
cvs -f co . || exit |
45 |
mkdir $cvs_co/dir || exit |
46 |
cvs -f add dir $cvs_co/dir || exit |
47 |
cvs -f commit -m "fake repository root" dir $cvs_co/dir || exit |
48 |
echo 0 > $cvs_co/dir/.svnrev || exit |
49 |
cvs -f add $cvs_co/dir/.svnrev || exit |
50 |
cvs -f commit -m "fake existing repository" $cvs_co/dir/.svnrev || exit |
51 |
cd - || exit |
52 |
|
53 |
rm -Rf $cvs_co || exit |
54 |
mkdir $cvs_co || exit |
55 |
cd $cvs_co && cvs -f co dir && cd - || exit |
56 |
|
57 |
function svn2cvs() { |
58 |
./svn2cvs.pl file://$svn_rep/dir $cvs_rep dir || exit |
59 |
} |
60 |
function update_cvs() { |
61 |
cd $cvs_co && cvs -f update -d dir && cd - || exit |
62 |
} |
63 |
function update_svn() { |
64 |
svn update $svn_co || exit |
65 |
} |
66 |
function update_all() { |
67 |
update_svn |
68 |
update_cvs |
69 |
} |
70 |
function test() { |
71 |
svn2cvs |
72 |
update_all |
73 |
diff -x .svn\* -x CVS -urw $svn_co/dir/ $cvs_co/dir/ || exit |
74 |
} |
75 |
|
76 |
svn2cvs |
77 |
update_cvs |
78 |
|
79 |
test -d "$cvs_co/dir/with space" || exit |
80 |
|
81 |
ps ax > $svn_co/dir/file || exit |
82 |
svn add $svn_co/dir/file || exit |
83 |
svn commit -m "file again" $svn_co || exit |
84 |
|
85 |
test |
86 |
|
87 |
svn rm $svn_co/dir/file || exit |
88 |
svn commit -m "remove file again" $svn_co || exit |
89 |
|
90 |
test |
91 |
|
92 |
echo "new file" > $svn_co/dir/skip_add |
93 |
svn add $svn_co/dir/skip_add || exit |
94 |
svn commit -m "add skip_add" $svn_co || exit |
95 |
|
96 |
echo "modify file" >> $svn_co/dir/skip_add |
97 |
svn commit -m "modify skip_add" $svn_co || exit |
98 |
|
99 |
cvs_rev=`cat $cvs_co/dir/.svnrev` |
100 |
echo "*** skipping revision $cvs_rev ***" |
101 |
echo `expr $cvs_rev + 1` > $cvs_co/dir/.svnrev || exit |
102 |
cd $cvs_co && cvs -f commit -m "skip $cvs_rev" dir/.svnrev && cd - || exit |
103 |
|
104 |
test |
105 |
|
106 |
echo keep > $svn_co/dir/keep |
107 |
svn add $svn_co/dir/keep |
108 |
svn mkdir $svn_co/dir/keep-dir |
109 |
echo keep > $svn_co/dir/keep-dir/keep |
110 |
svn add $svn_co/dir/keep-dir/keep |
111 |
svn commit -m "stuff to keep" $svn_co || exit |
112 |
|
113 |
test |
114 |
|
115 |
svn mkdir $svn_co/dir/foo |
116 |
echo bar > $svn_co/dir/foo/bar |
117 |
echo baz > $svn_co/dir/foo/baz |
118 |
echo bar > $svn_co/dir/bar |
119 |
echo baz > $svn_co/dir/baz |
120 |
svn add $svn_co/dir/* $svn_co/dir/foo/* |
121 |
svn commit -m "add a bunch of stuff" $svn_co || exit |
122 |
|
123 |
test |
124 |
|
125 |
svn rm $svn_co/dir/* || exit |
126 |
svn revert $svn_co/dir/keep $svn_co/dir/keep-dir/keep |
127 |
svn commit -m "remove everything" $svn_co || exit |
128 |
|
129 |
test |