Fossil SCM
Fix a problem with file delta detection in extra_compression().
Commit
4fd147f8154fc774a2922f92b8bc44addd99229411695c45b907c45ffe6c6514
Parent
cb29bc646b63a9c…
1 file changed
+2
-1
+2
-1
| --- src/rebuild.c | ||
| +++ src/rebuild.c | ||
| @@ -495,11 +495,11 @@ | ||
| 495 | 495 | /* For individual files that have not been deltaed, try to find |
| 496 | 496 | ** a parent which is an undeltaed file with the same name in a |
| 497 | 497 | ** more recent branch. |
| 498 | 498 | */ |
| 499 | 499 | db_prepare(&q, |
| 500 | - "SELECT blob.rid, mlink.fnid FROM blob, mlink, plink" | |
| 500 | + "SELECT DISTINCT blob.rid, mlink.fnid FROM blob, mlink, plink" | |
| 501 | 501 | " WHERE NOT EXISTS(SELECT 1 FROM delta WHERE rid=blob.rid)" |
| 502 | 502 | " AND mlink.fid=blob.rid" |
| 503 | 503 | " AND mlink.mid=plink.cid" |
| 504 | 504 | " AND plink.cid=mlink.mid" |
| 505 | 505 | " ORDER BY mlink.fnid, plink.mtime DESC" |
| @@ -507,10 +507,11 @@ | ||
| 507 | 507 | prevfnid = 0; |
| 508 | 508 | while( db_step(&q)==SQLITE_ROW ){ |
| 509 | 509 | rid = db_column_int(&q, 0); |
| 510 | 510 | fnid = db_column_int(&q, 1); |
| 511 | 511 | if( fnid!=prevfnid ) nPrev = 0; |
| 512 | + prevfnid = fnid; | |
| 512 | 513 | if( nPrev>0 ){ |
| 513 | 514 | content_deltify(rid, aPrev, nPrev, 0); |
| 514 | 515 | } |
| 515 | 516 | if( nPrev<N_NEIGHBOR ){ |
| 516 | 517 | aPrev[nPrev++] = rid; |
| 517 | 518 |
| --- src/rebuild.c | |
| +++ src/rebuild.c | |
| @@ -495,11 +495,11 @@ | |
| 495 | /* For individual files that have not been deltaed, try to find |
| 496 | ** a parent which is an undeltaed file with the same name in a |
| 497 | ** more recent branch. |
| 498 | */ |
| 499 | db_prepare(&q, |
| 500 | "SELECT blob.rid, mlink.fnid FROM blob, mlink, plink" |
| 501 | " WHERE NOT EXISTS(SELECT 1 FROM delta WHERE rid=blob.rid)" |
| 502 | " AND mlink.fid=blob.rid" |
| 503 | " AND mlink.mid=plink.cid" |
| 504 | " AND plink.cid=mlink.mid" |
| 505 | " ORDER BY mlink.fnid, plink.mtime DESC" |
| @@ -507,10 +507,11 @@ | |
| 507 | prevfnid = 0; |
| 508 | while( db_step(&q)==SQLITE_ROW ){ |
| 509 | rid = db_column_int(&q, 0); |
| 510 | fnid = db_column_int(&q, 1); |
| 511 | if( fnid!=prevfnid ) nPrev = 0; |
| 512 | if( nPrev>0 ){ |
| 513 | content_deltify(rid, aPrev, nPrev, 0); |
| 514 | } |
| 515 | if( nPrev<N_NEIGHBOR ){ |
| 516 | aPrev[nPrev++] = rid; |
| 517 |
| --- src/rebuild.c | |
| +++ src/rebuild.c | |
| @@ -495,11 +495,11 @@ | |
| 495 | /* For individual files that have not been deltaed, try to find |
| 496 | ** a parent which is an undeltaed file with the same name in a |
| 497 | ** more recent branch. |
| 498 | */ |
| 499 | db_prepare(&q, |
| 500 | "SELECT DISTINCT blob.rid, mlink.fnid FROM blob, mlink, plink" |
| 501 | " WHERE NOT EXISTS(SELECT 1 FROM delta WHERE rid=blob.rid)" |
| 502 | " AND mlink.fid=blob.rid" |
| 503 | " AND mlink.mid=plink.cid" |
| 504 | " AND plink.cid=mlink.mid" |
| 505 | " ORDER BY mlink.fnid, plink.mtime DESC" |
| @@ -507,10 +507,11 @@ | |
| 507 | prevfnid = 0; |
| 508 | while( db_step(&q)==SQLITE_ROW ){ |
| 509 | rid = db_column_int(&q, 0); |
| 510 | fnid = db_column_int(&q, 1); |
| 511 | if( fnid!=prevfnid ) nPrev = 0; |
| 512 | prevfnid = fnid; |
| 513 | if( nPrev>0 ){ |
| 514 | content_deltify(rid, aPrev, nPrev, 0); |
| 515 | } |
| 516 | if( nPrev<N_NEIGHBOR ){ |
| 517 | aPrev[nPrev++] = rid; |
| 518 |