##// END OF EJS Templates
tests: unify test-convert-cvs-detectmerge
Matt Mackall -
r12521:539480ce default
parent child Browse files
Show More
@@ -1,116 +1,231
1 #!/bin/sh
1 Test config convert.cvsps.mergefrom config setting.
2 (Should test similar mergeto feature, but I don't understand it yet.)
3 Requires builtin cvsps.
4
5 $ "$TESTDIR/hghave" cvs || exit 80
6 $ CVSROOT=`pwd`/cvsrepo
7 $ export CVSROOT
2 8
3 # Test config convert.cvsps.mergefrom config setting.
4 # (Should test similar mergeto feature, but I don't understand it yet.)
5 # Requires builtin cvsps.
9 $ cvscall()
10 > {
11 > cvs -f "$@"
12 > }
6 13
7 "$TESTDIR/hghave" cvs || exit 80
14 output of 'cvs ci' varies unpredictably, so just discard it
15 XXX copied from test-convert-cvs-synthetic
8 16
9 CVSROOT=`pwd`/cvsrepo
10 export CVSROOT
17 $ cvsci()
18 > {
19 > cvs -f ci "$@" > /dev/null
20 > }
21
22 XXX copied from test-convert-cvs-synthetic
11 23
12 # XXX copied from test-convert-cvs-synthetic
13 cvscall()
14 {
15 echo cvs -f "$@"
16 cvs -f "$@"
17 }
24 $ echo "[extensions]" >> $HGRCPATH
25 $ echo "convert = " >> $HGRCPATH
26 $ echo "graphlog = " >> $HGRCPATH
27 $ echo "[convert]" >> $HGRCPATH
28 $ echo "cvsps.cache=0" >> $HGRCPATH
29 $ echo "cvsps.mergefrom=\[MERGE from (\S+)\]" >> $HGRCPATH
30
31 create cvs repository with one project
18 32
19 # output of 'cvs ci' varies unpredictably, so just discard it
20 # XXX copied from test-convert-cvs-synthetic
21 cvsci()
22 {
23 echo cvs -f ci "$@"
24 cvs -f ci "$@" >/dev/null 2>&1
25 }
33 $ mkdir cvsrepo
34 $ cvscall -q -d "$CVSROOT" init
35 $ mkdir cvsrepo/proj
36
37 populate cvs repository
38
39 $ cvscall -Q co proj
40 $ cd proj
41 $ touch file1
42 $ cvscall -Q add file1
43 $ cvsci -m"add file1 on trunk"
44 cvs commit: Examining .
45
46 create two release branches
26 47
27 # XXX copied from test-convert-cvs-synthetic
28 filterpath()
29 {
30 eval "$@" | sed "s:$CVSROOT:*REPO*:g"
31 }
48 $ cvscall -q tag -b v1_0
49 T file1
50 $ cvscall -q tag -b v1_1
51 T file1
52
53 modify file1 on branch v1_0
32 54
33 echo "[extensions]" >> $HGRCPATH
34 echo "convert = " >> $HGRCPATH
35 echo "graphlog = " >> $HGRCPATH
36 echo "[convert]" >> $HGRCPATH
37 echo "cvsps.cache=0" >> $HGRCPATH
38 echo "cvsps.mergefrom=\[MERGE from (\S+)\]" >> $HGRCPATH
55 $ cvscall -Q update -rv1_0
56 $ echo "change" >> file1
57 $ cvsci -m"add text"
58 cvs commit: Examining .
59
60 make unrelated change on v1_1
61
62 $ cvscall -Q update -rv1_1
63 $ touch unrelated
64 $ cvscall -Q add unrelated
65 $ cvsci -m"unrelated change"
66 cvs commit: Examining .
67
68 merge file1 to v1_1
39 69
40 echo % create cvs repository with one project
41 mkdir cvsrepo
70 $ cvscall -Q update -jv1_0
71 RCS file: */cvsrepo/proj/file1,v (glob)
72 retrieving revision 1.1
73 retrieving revision 1.1.2.1
74 Merging differences between 1.1 and 1.1.2.1 into file1
75 $ cvsci -m"add text [MERGE from v1_0]"
76 cvs commit: Examining .
42 77
43 filterpath cvscall -q -d "$CVSROOT" init
44 mkdir cvsrepo/proj
78 merge change to trunk
45 79
46 echo % populate cvs repository
47 cvscall -Q co proj
48 cd proj
49 touch file1
50 cvscall -Q add file1
51 cvsci -m"add file1 on trunk"
80 $ cvscall -Q update -A
81 $ cvscall -Q update -jv1_1
82 RCS file: */cvsrepo/proj/file1,v (glob)
83 retrieving revision 1.1
84 retrieving revision 1.1.4.1
85 Merging differences between 1.1 and 1.1.4.1 into file1
86 $ cvsci -m"add text [MERGE from v1_1]"
87 cvs commit: Examining .
52 88
53 echo % create two release branches
54 cvscall -q tag -b v1_0
55 cvscall -q tag -b v1_1
89 non-merged change on trunk
90
91 $ echo "foo" > file2
92 $ cvscall -Q add file2
93 $ cvsci -m"add file2 on trunk" file2
94
95 this will create rev 1.3
96 change on trunk to backport
56 97
57 echo % modify file1 on branch v1_0
58 filterpath cvscall -Q update -rv1_0
59 echo "change" >> file1
60 cvsci -m"add text"
61
62 echo % make unrelated change on v1_1
63 cvscall -Q update -rv1_1
64 touch unrelated
65 cvscall -Q add unrelated
66 cvsci -m"unrelated change"
98 $ echo "backport me" >> file1
99 $ cvsci -m"add other text" file1
100 $ cvscall log file1
101
102 RCS file: */cvsrepo/proj/file1,v (glob)
103 Working file: file1
104 head: 1.3
105 branch:
106 locks: strict
107 access list:
108 symbolic names:
109 v1_1: 1.1.0.4
110 v1_0: 1.1.0.2
111 keyword substitution: kv
112 total revisions: 5; selected revisions: 5
113 description:
114 ----------------------------
115 revision 1.3
116 date: * (glob)
117 add other text
118 ----------------------------
119 revision 1.2
120 date: * (glob)
121 add text [MERGE from v1_1]
122 ----------------------------
123 revision 1.1
124 date: * (glob)
125 branches: 1.1.2; 1.1.4;
126 add file1 on trunk
127 ----------------------------
128 revision 1.1.4.1
129 date: * (glob)
130 add text [MERGE from v1_0]
131 ----------------------------
132 revision 1.1.2.1
133 date: * (glob)
134 add text
135 =============================================================================
67 136
68 echo % merge file1 to v1_1
69 filterpath cvscall -Q update -jv1_0
70 cvsci -m"add text [MERGE from v1_0]"
137 XXX how many ways are there to spell "trunk" with CVS?
138 backport trunk change to v1_1
139
140 $ cvscall -Q update -rv1_1
141 $ cvscall -Q update -j1.2 -j1.3 file1
142 RCS file: */cvsrepo/proj/file1,v (glob)
143 retrieving revision 1.2
144 retrieving revision 1.3
145 Merging differences between 1.2 and 1.3 into file1
146 $ cvsci -m"add other text [MERGE from HEAD]" file1
147
148 fix bug on v1_1, merge to trunk with error
71 149
72 echo % merge change to trunk
73 cvscall -Q update -A
74 filterpath cvscall -Q update -jv1_1
75 cvsci -m"add text [MERGE from v1_1]"
150 $ cvscall -Q update -rv1_1
151 $ echo "merge forward" >> file1
152 $ cvscall -Q tag unmerged
153 $ cvsci -m"fix file1"
154 cvs commit: Examining .
155 $ cvscall -Q update -A
156 $ cvscall -Q update -junmerged -jv1_1
157 RCS file: */cvsrepo/proj/file1,v (glob)
158 retrieving revision 1.1.4.2
159 retrieving revision 1.1.4.3
160 Merging differences between 1.1.4.2 and 1.1.4.3 into file1
76 161
77 echo % non-merged change on trunk
78 echo "foo" > file2
79 cvscall -Q add file2
80 cvsci -m"add file2 on trunk" file2
162 note the typo in the commit log message
81 163
82 # this will create rev 1.3
83 echo % change on trunk to backport
84 echo "backport me" >> file1
85 cvsci -m"add other text" file1
86 cvscall log file1 | sed -n '/^date: / d; /^revision /,$ p;'
164 $ cvsci -m"fix file1 [MERGE from v1-1]"
165 cvs commit: Examining .
166 $ cvs -Q tag -d unmerged
167
168 convert to hg
87 169
88 # XXX how many ways are there to spell "trunk" with CVS?
89 echo % backport trunk change to v1_1
90 cvscall -Q update -rv1_1
91 filterpath cvscall -Q update -j1.2 -j1.3 file1
92 cvsci -m"add other text [MERGE from HEAD]" file1
170 $ cd ..
171 $ hg convert proj proj.hg
172 initializing destination proj.hg repository
173 connecting to */cvsrepo (glob)
174 scanning source...
175 collecting CVS rlog
176 12 log entries
177 creating changesets
178 warning: CVS commit message references non-existent branch 'v1-1':
179 fix file1 [MERGE from v1-1]
180 10 changeset entries
181 sorting...
182 converting...
183 9 add file1 on trunk
184 8 add text
185 7 unrelated change
186 6 add text [MERGE from v1_0]
187 5 add text [MERGE from v1_1]
188 4 add file2 on trunk
189 3 add other text
190 2 add other text [MERGE from HEAD]
191 1 fix file1
192 0 fix file1 [MERGE from v1-1]
193
194 complete log
93 195
94 set -e
95 echo "% fix bug on v1_1, merge to trunk with error"
96 cvscall -Q update -rv1_1
97 echo "merge forward" >> file1
98 cvscall -Q tag unmerged
99 cvsci -m"fix file1"
100 cvscall -Q update -A
101 filterpath cvscall -Q update -junmerged -jv1_1
102 # note the typo in the commit log message
103 cvsci -m"fix file1 [MERGE from v1-1]"
104 cvs -Q tag -d unmerged
196 $ template="{rev}: '{branches}' {desc}\n"
197 $ hg -R proj.hg log --template="$template"
198 9: '' fix file1 [MERGE from v1-1]
199 8: 'v1_1' fix file1
200 7: 'v1_1' add other text [MERGE from HEAD]
201 6: '' add other text
202 5: '' add file2 on trunk
203 4: '' add text [MERGE from v1_1]
204 3: 'v1_1' add text [MERGE from v1_0]
205 2: 'v1_1' unrelated change
206 1: 'v1_0' add text
207 0: '' add file1 on trunk
208
209 graphical log
105 210
106 set -e
107 echo % convert to hg
108 cd ..
109 filterpath hg convert proj proj.hg
110
111 echo % complete log
112 template="{rev}: '{branches}' {desc}\n"
113 hg -R proj.hg log --template="$template"
114
115 echo % graphical log
116 hg -R proj.hg glog --template="$template"
211 $ hg -R proj.hg glog --template="$template"
212 o 9: '' fix file1 [MERGE from v1-1]
213 |
214 | o 8: 'v1_1' fix file1
215 | |
216 | o 7: 'v1_1' add other text [MERGE from HEAD]
217 |/|
218 o | 6: '' add other text
219 | |
220 o | 5: '' add file2 on trunk
221 | |
222 o | 4: '' add text [MERGE from v1_1]
223 |\|
224 | o 3: 'v1_1' add text [MERGE from v1_0]
225 | |\
226 +---o 2: 'v1_1' unrelated change
227 | |
228 | o 1: 'v1_0' add text
229 |/
230 o 0: '' add file1 on trunk
231
1 NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now