Fossil SCM
Fix for copy on same branch causing a merge
Commit
06d3aa22d3a25b4989aeb223b7800110ecb62e0a
Parent
aea273f77e9bcfd…
1 file changed
+10
-12
+10
-12
| --- src/import.c | ||
| +++ src/import.c | ||
| @@ -1228,15 +1228,16 @@ | ||
| 1228 | 1228 | db_reset(&addRev); |
| 1229 | 1229 | } /* no 'else' here since 'replace' does both a 'delete' and an 'add' */ |
| 1230 | 1230 | if( strncmp(zAction, "add", 3)==0 |
| 1231 | 1231 | || strncmp(zAction, "replace", 7)==0 ) |
| 1232 | 1232 | { |
| 1233 | + int srcRid = 0; | |
| 1233 | 1234 | if( zKind==0 ){ |
| 1234 | 1235 | fossil_fatal("Missing Node-kind"); |
| 1235 | 1236 | }else if( strncmp(zKind, "dir", 3)==0 ){ |
| 1236 | 1237 | if( zSrcPath ){ |
| 1237 | - int srcRid = db_int(0, "SELECT trid, max(trev) FROM xrevisions" | |
| 1238 | + srcRid = db_int(0, "SELECT trid, max(trev) FROM xrevisions" | |
| 1238 | 1239 | " WHERE trev<=%d AND tbranch=%d", |
| 1239 | 1240 | srcRev, srcBranch); |
| 1240 | 1241 | if( srcRid>0 ){ |
| 1241 | 1242 | db_bind_text(&cpyPath, ":path", zFile); |
| 1242 | 1243 | db_bind_int(&cpyPath, ":branch", branchId); |
| @@ -1245,33 +1246,23 @@ | ||
| 1245 | 1246 | db_step(&cpyPath); |
| 1246 | 1247 | db_reset(&cpyPath); |
| 1247 | 1248 | db_bind_int(&addRev, ":branch", branchId); |
| 1248 | 1249 | db_step(&addRev); |
| 1249 | 1250 | db_reset(&addRev); |
| 1250 | - db_bind_int(&revSrc, ":parent", srcRid); | |
| 1251 | - db_bind_int(&revSrc, ":rev", gsvn.rev); | |
| 1252 | - db_bind_int(&revSrc, ":branch", branchId); | |
| 1253 | - db_step(&revSrc); | |
| 1254 | - db_reset(&revSrc); | |
| 1255 | 1251 | } |
| 1256 | 1252 | } |
| 1257 | 1253 | }else{ |
| 1258 | 1254 | int rid = 0; |
| 1259 | 1255 | if( zSrcPath ){ |
| 1260 | - int srcRid = db_int(0, "SELECT trid, max(trev) FROM xrevisions" | |
| 1256 | + srcRid = db_int(0, "SELECT trid, max(trev) FROM xrevisions" | |
| 1261 | 1257 | " WHERE trev<=%d AND tbranch=%d", |
| 1262 | 1258 | srcRev, srcBranch); |
| 1263 | 1259 | rid = db_int(0, "SELECT rid FROM blob WHERE uuid=(" |
| 1264 | 1260 | " SELECT uuid FROM xfoci" |
| 1265 | 1261 | " WHERE checkinID=%d AND filename=%Q" |
| 1266 | 1262 | ")", |
| 1267 | 1263 | srcRid, zSrcFile); |
| 1268 | - db_bind_int(&revSrc, ":parent", srcRid); | |
| 1269 | - db_bind_int(&revSrc, ":rev", gsvn.rev); | |
| 1270 | - db_bind_int(&revSrc, ":branch", branchId); | |
| 1271 | - db_step(&revSrc); | |
| 1272 | - db_reset(&revSrc); | |
| 1273 | 1264 | } |
| 1274 | 1265 | if( deltaFlag ){ |
| 1275 | 1266 | Blob deltaSrc; |
| 1276 | 1267 | Blob target; |
| 1277 | 1268 | if( rid!=0 ){ |
| @@ -1291,10 +1282,17 @@ | ||
| 1291 | 1282 | db_step(&addFile); |
| 1292 | 1283 | db_reset(&addFile); |
| 1293 | 1284 | db_bind_int(&addRev, ":branch", branchId); |
| 1294 | 1285 | db_step(&addRev); |
| 1295 | 1286 | db_reset(&addRev); |
| 1287 | + } | |
| 1288 | + if( zSrcPath && srcRid>0 && srcBranch!=branchId ){ | |
| 1289 | + db_bind_int(&revSrc, ":parent", srcRid); | |
| 1290 | + db_bind_int(&revSrc, ":rev", gsvn.rev); | |
| 1291 | + db_bind_int(&revSrc, ":branch", branchId); | |
| 1292 | + db_step(&revSrc); | |
| 1293 | + db_reset(&revSrc); | |
| 1296 | 1294 | } |
| 1297 | 1295 | }else |
| 1298 | 1296 | if( strncmp(zAction, "change", 6)==0 ){ |
| 1299 | 1297 | int rid = 0; |
| 1300 | 1298 | if( zKind==0 ){ |
| 1301 | 1299 |
| --- src/import.c | |
| +++ src/import.c | |
| @@ -1228,15 +1228,16 @@ | |
| 1228 | db_reset(&addRev); |
| 1229 | } /* no 'else' here since 'replace' does both a 'delete' and an 'add' */ |
| 1230 | if( strncmp(zAction, "add", 3)==0 |
| 1231 | || strncmp(zAction, "replace", 7)==0 ) |
| 1232 | { |
| 1233 | if( zKind==0 ){ |
| 1234 | fossil_fatal("Missing Node-kind"); |
| 1235 | }else if( strncmp(zKind, "dir", 3)==0 ){ |
| 1236 | if( zSrcPath ){ |
| 1237 | int srcRid = db_int(0, "SELECT trid, max(trev) FROM xrevisions" |
| 1238 | " WHERE trev<=%d AND tbranch=%d", |
| 1239 | srcRev, srcBranch); |
| 1240 | if( srcRid>0 ){ |
| 1241 | db_bind_text(&cpyPath, ":path", zFile); |
| 1242 | db_bind_int(&cpyPath, ":branch", branchId); |
| @@ -1245,33 +1246,23 @@ | |
| 1245 | db_step(&cpyPath); |
| 1246 | db_reset(&cpyPath); |
| 1247 | db_bind_int(&addRev, ":branch", branchId); |
| 1248 | db_step(&addRev); |
| 1249 | db_reset(&addRev); |
| 1250 | db_bind_int(&revSrc, ":parent", srcRid); |
| 1251 | db_bind_int(&revSrc, ":rev", gsvn.rev); |
| 1252 | db_bind_int(&revSrc, ":branch", branchId); |
| 1253 | db_step(&revSrc); |
| 1254 | db_reset(&revSrc); |
| 1255 | } |
| 1256 | } |
| 1257 | }else{ |
| 1258 | int rid = 0; |
| 1259 | if( zSrcPath ){ |
| 1260 | int srcRid = db_int(0, "SELECT trid, max(trev) FROM xrevisions" |
| 1261 | " WHERE trev<=%d AND tbranch=%d", |
| 1262 | srcRev, srcBranch); |
| 1263 | rid = db_int(0, "SELECT rid FROM blob WHERE uuid=(" |
| 1264 | " SELECT uuid FROM xfoci" |
| 1265 | " WHERE checkinID=%d AND filename=%Q" |
| 1266 | ")", |
| 1267 | srcRid, zSrcFile); |
| 1268 | db_bind_int(&revSrc, ":parent", srcRid); |
| 1269 | db_bind_int(&revSrc, ":rev", gsvn.rev); |
| 1270 | db_bind_int(&revSrc, ":branch", branchId); |
| 1271 | db_step(&revSrc); |
| 1272 | db_reset(&revSrc); |
| 1273 | } |
| 1274 | if( deltaFlag ){ |
| 1275 | Blob deltaSrc; |
| 1276 | Blob target; |
| 1277 | if( rid!=0 ){ |
| @@ -1291,10 +1282,17 @@ | |
| 1291 | db_step(&addFile); |
| 1292 | db_reset(&addFile); |
| 1293 | db_bind_int(&addRev, ":branch", branchId); |
| 1294 | db_step(&addRev); |
| 1295 | db_reset(&addRev); |
| 1296 | } |
| 1297 | }else |
| 1298 | if( strncmp(zAction, "change", 6)==0 ){ |
| 1299 | int rid = 0; |
| 1300 | if( zKind==0 ){ |
| 1301 |
| --- src/import.c | |
| +++ src/import.c | |
| @@ -1228,15 +1228,16 @@ | |
| 1228 | db_reset(&addRev); |
| 1229 | } /* no 'else' here since 'replace' does both a 'delete' and an 'add' */ |
| 1230 | if( strncmp(zAction, "add", 3)==0 |
| 1231 | || strncmp(zAction, "replace", 7)==0 ) |
| 1232 | { |
| 1233 | int srcRid = 0; |
| 1234 | if( zKind==0 ){ |
| 1235 | fossil_fatal("Missing Node-kind"); |
| 1236 | }else if( strncmp(zKind, "dir", 3)==0 ){ |
| 1237 | if( zSrcPath ){ |
| 1238 | srcRid = db_int(0, "SELECT trid, max(trev) FROM xrevisions" |
| 1239 | " WHERE trev<=%d AND tbranch=%d", |
| 1240 | srcRev, srcBranch); |
| 1241 | if( srcRid>0 ){ |
| 1242 | db_bind_text(&cpyPath, ":path", zFile); |
| 1243 | db_bind_int(&cpyPath, ":branch", branchId); |
| @@ -1245,33 +1246,23 @@ | |
| 1246 | db_step(&cpyPath); |
| 1247 | db_reset(&cpyPath); |
| 1248 | db_bind_int(&addRev, ":branch", branchId); |
| 1249 | db_step(&addRev); |
| 1250 | db_reset(&addRev); |
| 1251 | } |
| 1252 | } |
| 1253 | }else{ |
| 1254 | int rid = 0; |
| 1255 | if( zSrcPath ){ |
| 1256 | srcRid = db_int(0, "SELECT trid, max(trev) FROM xrevisions" |
| 1257 | " WHERE trev<=%d AND tbranch=%d", |
| 1258 | srcRev, srcBranch); |
| 1259 | rid = db_int(0, "SELECT rid FROM blob WHERE uuid=(" |
| 1260 | " SELECT uuid FROM xfoci" |
| 1261 | " WHERE checkinID=%d AND filename=%Q" |
| 1262 | ")", |
| 1263 | srcRid, zSrcFile); |
| 1264 | } |
| 1265 | if( deltaFlag ){ |
| 1266 | Blob deltaSrc; |
| 1267 | Blob target; |
| 1268 | if( rid!=0 ){ |
| @@ -1291,10 +1282,17 @@ | |
| 1282 | db_step(&addFile); |
| 1283 | db_reset(&addFile); |
| 1284 | db_bind_int(&addRev, ":branch", branchId); |
| 1285 | db_step(&addRev); |
| 1286 | db_reset(&addRev); |
| 1287 | } |
| 1288 | if( zSrcPath && srcRid>0 && srcBranch!=branchId ){ |
| 1289 | db_bind_int(&revSrc, ":parent", srcRid); |
| 1290 | db_bind_int(&revSrc, ":rev", gsvn.rev); |
| 1291 | db_bind_int(&revSrc, ":branch", branchId); |
| 1292 | db_step(&revSrc); |
| 1293 | db_reset(&revSrc); |
| 1294 | } |
| 1295 | }else |
| 1296 | if( strncmp(zAction, "change", 6)==0 ){ |
| 1297 | int rid = 0; |
| 1298 | if( zKind==0 ){ |
| 1299 |