Fossil SCM

Another bug fix associating with merges of branches which contain file name changes.

drh 2010-12-14 00:06 trunk
Commit 4c95b7b95065a9cb9fd7df59d63b1504e08a56b5
2 files changed +6 -2 +26 -4
+6 -2
--- src/merge.c
+++ src/merge.c
@@ -164,17 +164,21 @@
164164
** Compute name changes from P->V
165165
*/
166166
find_filename_changes(vid, pid, &nChng, &aChng);
167167
if( nChng ){
168168
for(i=0; i<nChng; i++){
169
+ char *z;
170
+ z = db_text(0, "SELECT name FROM filename WHERE fnid=%d", aChng[i*2+1]);
169171
db_multi_exec(
170
- "UPDATE fv SET fnp=(SELECT name FROM filename WHERE fnid=%d)"
172
+ "UPDATE fv SET fnp=%Q, fnm=%Q"
171173
" WHERE fn=(SELECT name FROM filename WHERE fnid=%d)",
172
- aChng[i*2+1], aChng[i*2]
174
+ z, z, aChng[i*2]
173175
);
176
+ free(z);
174177
}
175178
fossil_free(aChng);
179
+ db_multi_exec("UPDATE fv SET fnm=fnp WHERE fnp!=fn");
176180
}
177181
178182
/* Add files found in P
179183
*/
180184
db_multi_exec(
181185
--- src/merge.c
+++ src/merge.c
@@ -164,17 +164,21 @@
164 ** Compute name changes from P->V
165 */
166 find_filename_changes(vid, pid, &nChng, &aChng);
167 if( nChng ){
168 for(i=0; i<nChng; i++){
 
 
169 db_multi_exec(
170 "UPDATE fv SET fnp=(SELECT name FROM filename WHERE fnid=%d)"
171 " WHERE fn=(SELECT name FROM filename WHERE fnid=%d)",
172 aChng[i*2+1], aChng[i*2]
173 );
 
174 }
175 fossil_free(aChng);
 
176 }
177
178 /* Add files found in P
179 */
180 db_multi_exec(
181
--- src/merge.c
+++ src/merge.c
@@ -164,17 +164,21 @@
164 ** Compute name changes from P->V
165 */
166 find_filename_changes(vid, pid, &nChng, &aChng);
167 if( nChng ){
168 for(i=0; i<nChng; i++){
169 char *z;
170 z = db_text(0, "SELECT name FROM filename WHERE fnid=%d", aChng[i*2+1]);
171 db_multi_exec(
172 "UPDATE fv SET fnp=%Q, fnm=%Q"
173 " WHERE fn=(SELECT name FROM filename WHERE fnid=%d)",
174 z, z, aChng[i*2]
175 );
176 free(z);
177 }
178 fossil_free(aChng);
179 db_multi_exec("UPDATE fv SET fnm=fnp WHERE fnp!=fn");
180 }
181
182 /* Add files found in P
183 */
184 db_multi_exec(
185
+26 -4
--- test/merge5.test
+++ test/merge5.test
@@ -253,28 +253,50 @@
253253
6f525ab779ad66e24474d845c5fb7938be42d50d one.txt
254254
64a8a5c7320fccfa4b2e5dfc5fd20a5381a86c5b three.txt
255255
b262fee89ed8a27a23a5e09d3917e0bebe22cd24 two.txt
256256
}
257257
fossil merge br5
258
-checkout-test 131 {
258
+checkout-test 133 {
259259
7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt
260260
98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt
261261
e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt
262262
}
263263
fossil commit -nosign -m {merge with rename} -branch {trunk+br5}
264
-checkout-test 133 {
264
+checkout-test 134 {
265265
7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt
266266
98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt
267267
e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt
268268
}
269269
fossil update chng3
270
-checkout-test 134 {
270
+checkout-test 135 {
271271
6f525ab779ad66e24474d845c5fb7938be42d50d one.txt
272272
64a8a5c7320fccfa4b2e5dfc5fd20a5381a86c5b three.txt
273273
b262fee89ed8a27a23a5e09d3917e0bebe22cd24 two.txt
274274
}
275275
fossil update trunk+br5
276
-checkout-test 135 {
276
+checkout-test 136 {
277
+ 7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt
278
+ 98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt
279
+ e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt
280
+}
281
+
282
+# Merge the chng3 check-in into br5, verifying that the change to two.txt
283
+# from chng3 are applies to two-rename.txt in br5.
284
+#
285
+fossil update br5
286
+checkout-test 140 {
287
+ e866bb885d5184cba497cfb6a4eb281688519521 one.txt
288
+ e09593950837f76e70ca2f8ff2272ae3df0ba017 three.txt
289
+ 5ebb3c9ad50740a7382902657b84a6105c32fc7b two-rename.txt
290
+}
291
+fossil merge chng3
292
+checkout-test 141 {
293
+ 7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt
294
+ 98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt
295
+ e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt
296
+}
297
+fossil commit -nosign -m {change to two} -branch br5-2
298
+checkout-test 142 {
277299
7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt
278300
98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt
279301
e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt
280302
}
281303
--- test/merge5.test
+++ test/merge5.test
@@ -253,28 +253,50 @@
253 6f525ab779ad66e24474d845c5fb7938be42d50d one.txt
254 64a8a5c7320fccfa4b2e5dfc5fd20a5381a86c5b three.txt
255 b262fee89ed8a27a23a5e09d3917e0bebe22cd24 two.txt
256 }
257 fossil merge br5
258 checkout-test 131 {
259 7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt
260 98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt
261 e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt
262 }
263 fossil commit -nosign -m {merge with rename} -branch {trunk+br5}
264 checkout-test 133 {
265 7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt
266 98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt
267 e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt
268 }
269 fossil update chng3
270 checkout-test 134 {
271 6f525ab779ad66e24474d845c5fb7938be42d50d one.txt
272 64a8a5c7320fccfa4b2e5dfc5fd20a5381a86c5b three.txt
273 b262fee89ed8a27a23a5e09d3917e0bebe22cd24 two.txt
274 }
275 fossil update trunk+br5
276 checkout-test 135 {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
277 7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt
278 98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt
279 e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt
280 }
281
--- test/merge5.test
+++ test/merge5.test
@@ -253,28 +253,50 @@
253 6f525ab779ad66e24474d845c5fb7938be42d50d one.txt
254 64a8a5c7320fccfa4b2e5dfc5fd20a5381a86c5b three.txt
255 b262fee89ed8a27a23a5e09d3917e0bebe22cd24 two.txt
256 }
257 fossil merge br5
258 checkout-test 133 {
259 7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt
260 98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt
261 e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt
262 }
263 fossil commit -nosign -m {merge with rename} -branch {trunk+br5}
264 checkout-test 134 {
265 7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt
266 98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt
267 e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt
268 }
269 fossil update chng3
270 checkout-test 135 {
271 6f525ab779ad66e24474d845c5fb7938be42d50d one.txt
272 64a8a5c7320fccfa4b2e5dfc5fd20a5381a86c5b three.txt
273 b262fee89ed8a27a23a5e09d3917e0bebe22cd24 two.txt
274 }
275 fossil update trunk+br5
276 checkout-test 136 {
277 7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt
278 98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt
279 e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt
280 }
281
282 # Merge the chng3 check-in into br5, verifying that the change to two.txt
283 # from chng3 are applies to two-rename.txt in br5.
284 #
285 fossil update br5
286 checkout-test 140 {
287 e866bb885d5184cba497cfb6a4eb281688519521 one.txt
288 e09593950837f76e70ca2f8ff2272ae3df0ba017 three.txt
289 5ebb3c9ad50740a7382902657b84a6105c32fc7b two-rename.txt
290 }
291 fossil merge chng3
292 checkout-test 141 {
293 7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt
294 98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt
295 e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt
296 }
297 fossil commit -nosign -m {change to two} -branch br5-2
298 checkout-test 142 {
299 7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt
300 98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt
301 e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt
302 }
303

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button