Show More
@@ -1,79 +1,108 b'' | |||
|
1 | #!/bin/sh | |
|
2 | ||
|
3 | "$TESTDIR/hghave" svn svn-bindings || exit 80 | |
|
4 | ||
|
5 | fix_path() | |
|
6 | { | |
|
7 | tr '\\' / | |
|
8 | } | |
|
9 | ||
|
10 | echo "[extensions]" >> $HGRCPATH | |
|
11 | echo "convert = " >> $HGRCPATH | |
|
12 | echo "mq = " >> $HGRCPATH | |
|
13 | ||
|
14 | svnpath=`pwd | fix_path`/svn-repo | |
|
15 | svnadmin create "$svnpath" | |
|
16 | 1 | |
|
17 | cat > "$svnpath"/hooks/pre-revprop-change <<'EOF' | |
|
18 | #!/bin/sh | |
|
19 | ||
|
20 | REPOS="$1" | |
|
21 | REV="$2" | |
|
22 | USER="$3" | |
|
23 | PROPNAME="$4" | |
|
24 | ACTION="$5" | |
|
2 | $ "$TESTDIR/hghave" svn svn-bindings || exit 80 | |
|
3 | $ fix_path() | |
|
4 | > { | |
|
5 | > tr '\\' / | |
|
6 | > } | |
|
7 | $ echo "[extensions]" >> $HGRCPATH | |
|
8 | $ echo "convert = " >> $HGRCPATH | |
|
9 | $ echo "mq = " >> $HGRCPATH | |
|
10 | $ svnpath=`pwd | fix_path`/svn-repo | |
|
11 | $ svnadmin create "$svnpath" | |
|
12 | $ cat > "$svnpath"/hooks/pre-revprop-change <<EOF | |
|
13 | > #!/bin/sh | |
|
14 | > | |
|
15 | > REPOS="$1" | |
|
16 | > REV="$2" | |
|
17 | > USER="$3" | |
|
18 | > PROPNAME="$4" | |
|
19 | > ACTION="$5" | |
|
20 | > | |
|
21 | > if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi | |
|
22 | > if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-branch" ]; then exit 0; fi | |
|
23 | > if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-rev" ]; then exit 0; fi | |
|
24 | > | |
|
25 | > echo "Changing prohibited revision property" >&2 | |
|
26 | > exit 1 | |
|
27 | > EOF | |
|
28 | $ chmod +x "$svnpath"/hooks/pre-revprop-change | |
|
29 | $ | |
|
30 | $ # SVN wants all paths to start with a slash. Unfortunately, | |
|
31 | $ # Windows ones don't. Handle that. | |
|
32 | $ svnurl="$svnpath" | |
|
33 | $ expr "$svnurl" : "\/" > /dev/null || svnurl="/$svnurl" | |
|
34 | $ svnurl="file://$svnurl" | |
|
35 | $ svn co "$svnurl" "$svnpath"-wc | |
|
36 | Checked out revision 0. | |
|
37 | $ cd "$svnpath"-wc | |
|
38 | $ echo a > a | |
|
39 | $ svn add a | |
|
40 | A a | |
|
41 | $ svn ci -m'added a' a | |
|
42 | Adding a | |
|
43 | Transmitting file data . | |
|
44 | Committed revision 1. | |
|
45 | $ cd .. | |
|
25 | 46 | |
|
26 | if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi | |
|
27 | if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-branch" ]; then exit 0; fi | |
|
28 | if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-rev" ]; then exit 0; fi | |
|
29 | ||
|
30 | echo "Changing prohibited revision property" >&2 | |
|
31 | exit 1 | |
|
32 | EOF | |
|
33 | chmod +x "$svnpath"/hooks/pre-revprop-change | |
|
47 | initial roundtrip | |
|
34 | 48 | |
|
35 | # SVN wants all paths to start with a slash. Unfortunately, | |
|
36 | # Windows ones don't. Handle that. | |
|
37 | svnurl="$svnpath" | |
|
38 | expr "$svnurl" : "\/" > /dev/null | |
|
39 | if [ $? -ne 0 ]; then | |
|
40 | svnurl="/$svnurl" | |
|
41 | fi | |
|
42 | svnurl="file://$svnurl" | |
|
43 | svn co "$svnurl" "$svnpath"-wc | |
|
49 | $ hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg | grep -v initializing | |
|
50 | scanning source... | |
|
51 | sorting... | |
|
52 | converting... | |
|
53 | 0 added a | |
|
54 | $ hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc | |
|
55 | scanning source... | |
|
56 | sorting... | |
|
57 | converting... | |
|
44 | 58 | |
|
45 | cd "$svnpath"-wc | |
|
46 | echo a > a | |
|
47 | svn add a | |
|
48 | svn ci -m'added a' a | |
|
59 | second roundtrip should do nothing | |
|
49 | 60 | |
|
50 | cd .. | |
|
61 | $ hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg | |
|
62 | scanning source... | |
|
63 | sorting... | |
|
64 | converting... | |
|
65 | $ hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc | |
|
66 | scanning source... | |
|
67 | sorting... | |
|
68 | converting... | |
|
51 | 69 | |
|
52 | echo % initial roundtrip | |
|
53 | hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg | grep -v initializing | |
|
54 | hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc | |
|
70 | new hg rev | |
|
55 | 71 | |
|
56 | echo % second roundtrip should do nothing | |
|
57 | hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg | |
|
58 | hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc | |
|
72 | $ hg clone "$svnpath"-hg "$svnpath"-work | |
|
73 | updating to branch default | |
|
74 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
|
75 | $ cd "$svnpath"-work | |
|
76 | $ echo b > b | |
|
77 | $ hg add b | |
|
78 | $ hg ci -mb | |
|
59 | 79 | |
|
60 | echo % new hg rev | |
|
80 | adding an empty revision | |
|
81 | ||
|
82 | $ hg qnew -m emtpy empty | |
|
83 | $ hg qfinish -a | |
|
84 | $ cd .. | |
|
85 | ||
|
86 | echo hg to svn | |
|
61 | 87 | |
|
62 |
|
|
|
63 | cd "$svnpath"-work | |
|
64 | echo b > b | |
|
65 | hg add b | |
|
66 | hg ci -mb | |
|
67 | echo '% adding an empty revision' | |
|
68 | hg qnew -m emtpy empty | |
|
69 | hg qfinish -a | |
|
70 | cd .. | |
|
88 | $ hg --cwd "$svnpath"-hg pull -q "$svnpath"-work | |
|
89 | $ hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc | |
|
90 | scanning source... | |
|
91 | sorting... | |
|
92 | converting... | |
|
93 | 1 b | |
|
94 | 0 emtpy | |
|
95 | ||
|
96 | svn back to hg should do nothing | |
|
71 | 97 | |
|
72 | echo % echo hg to svn | |
|
73 | hg --cwd "$svnpath"-hg pull -q "$svnpath"-work | |
|
74 | hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc | |
|
98 | $ hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg | |
|
99 | scanning source... | |
|
100 | sorting... | |
|
101 | converting... | |
|
75 | 102 | |
|
76 |
|
|
|
77 | hg convert -s svn -d hg "$svnpath"-wc "$svnpath"-hg | |
|
78 | echo % hg back to svn should do nothing | |
|
79 | hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc | |
|
103 | hg back to svn should do nothing | |
|
104 | ||
|
105 | $ hg convert -s hg -d svn "$svnpath"-hg "$svnpath"-wc | |
|
106 | scanning source... | |
|
107 | sorting... | |
|
108 | converting... |
|
1 | NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now