Fossil SCM
Another bug fix associating with merges of branches which contain file name changes.
Commit
4c95b7b95065a9cb9fd7df59d63b1504e08a56b5
Parent
fa5302c28d3b944…
2 files changed
+6
-2
+26
-4
+6
-2
| --- src/merge.c | ||
| +++ src/merge.c | ||
| @@ -164,17 +164,21 @@ | ||
| 164 | 164 | ** Compute name changes from P->V |
| 165 | 165 | */ |
| 166 | 166 | find_filename_changes(vid, pid, &nChng, &aChng); |
| 167 | 167 | if( nChng ){ |
| 168 | 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]); | |
| 169 | 171 | db_multi_exec( |
| 170 | - "UPDATE fv SET fnp=(SELECT name FROM filename WHERE fnid=%d)" | |
| 172 | + "UPDATE fv SET fnp=%Q, fnm=%Q" | |
| 171 | 173 | " WHERE fn=(SELECT name FROM filename WHERE fnid=%d)", |
| 172 | - aChng[i*2+1], aChng[i*2] | |
| 174 | + z, z, aChng[i*2] | |
| 173 | 175 | ); |
| 176 | + free(z); | |
| 174 | 177 | } |
| 175 | 178 | fossil_free(aChng); |
| 179 | + db_multi_exec("UPDATE fv SET fnm=fnp WHERE fnp!=fn"); | |
| 176 | 180 | } |
| 177 | 181 | |
| 178 | 182 | /* Add files found in P |
| 179 | 183 | */ |
| 180 | 184 | db_multi_exec( |
| 181 | 185 |
| --- 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 @@ | ||
| 253 | 253 | 6f525ab779ad66e24474d845c5fb7938be42d50d one.txt |
| 254 | 254 | 64a8a5c7320fccfa4b2e5dfc5fd20a5381a86c5b three.txt |
| 255 | 255 | b262fee89ed8a27a23a5e09d3917e0bebe22cd24 two.txt |
| 256 | 256 | } |
| 257 | 257 | fossil merge br5 |
| 258 | -checkout-test 131 { | |
| 258 | +checkout-test 133 { | |
| 259 | 259 | 7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt |
| 260 | 260 | 98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt |
| 261 | 261 | e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt |
| 262 | 262 | } |
| 263 | 263 | fossil commit -nosign -m {merge with rename} -branch {trunk+br5} |
| 264 | -checkout-test 133 { | |
| 264 | +checkout-test 134 { | |
| 265 | 265 | 7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt |
| 266 | 266 | 98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt |
| 267 | 267 | e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt |
| 268 | 268 | } |
| 269 | 269 | fossil update chng3 |
| 270 | -checkout-test 134 { | |
| 270 | +checkout-test 135 { | |
| 271 | 271 | 6f525ab779ad66e24474d845c5fb7938be42d50d one.txt |
| 272 | 272 | 64a8a5c7320fccfa4b2e5dfc5fd20a5381a86c5b three.txt |
| 273 | 273 | b262fee89ed8a27a23a5e09d3917e0bebe22cd24 two.txt |
| 274 | 274 | } |
| 275 | 275 | 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 { | |
| 277 | 299 | 7eaf64a2c9141277b4c24259c7766d6a77047af7 one.txt |
| 278 | 300 | 98e47f99bb9fed4fdcd407f553615ca7f15a38a2 three.txt |
| 279 | 301 | e58c5da3e6007d0e30600ea31611813093ad180f two-rename.txt |
| 280 | 302 | } |
| 281 | 303 |
| --- 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 |