Fossil SCM

Prevent delta loops on sync operations that might otherwise occur if a sequence of file changes ends with a file back to its original state after a sequence of two or more intermediate states. The is a backport/cherrypick of check-in [141b990722ea81e10e5]

drh 2012-11-17 19:22 UTC branch-1.19
Commit 285eeba64fde9b7cfe9c4cb1e6a0c570f0c48448
1 file changed +3 -7
+3 -7
--- src/xfer.c
+++ src/xfer.c
@@ -268,19 +268,15 @@
268268
Blob *pUuid /* The UUID of the file to send */
269269
){
270270
static const char *azQuery[] = {
271271
"SELECT pid FROM plink x"
272272
" WHERE cid=%d"
273
- " AND NOT EXISTS(SELECT 1 FROM phantom WHERE rid=pid)"
274
- " AND NOT EXISTS(SELECT 1 FROM plink y"
275
- " WHERE y.pid=x.cid AND y.cid=x.pid)",
276
-
277
- "SELECT pid FROM mlink x"
273
+ " AND NOT EXISTS(SELECT 1 FROM phantom WHERE rid=pid)",
274
+
275
+ "SELECT pid, min(mtime) FROM mlink, event ON mlink.mid=event.objid"
278276
" WHERE fid=%d"
279277
" AND NOT EXISTS(SELECT 1 FROM phantom WHERE rid=pid)"
280
- " AND NOT EXISTS(SELECT 1 FROM mlink y"
281
- " WHERE y.pid=x.fid AND y.fid=x.pid)"
282278
};
283279
int i;
284280
Blob src, delta;
285281
int size = 0;
286282
int srcId = 0;
287283
--- src/xfer.c
+++ src/xfer.c
@@ -268,19 +268,15 @@
268 Blob *pUuid /* The UUID of the file to send */
269 ){
270 static const char *azQuery[] = {
271 "SELECT pid FROM plink x"
272 " WHERE cid=%d"
273 " AND NOT EXISTS(SELECT 1 FROM phantom WHERE rid=pid)"
274 " AND NOT EXISTS(SELECT 1 FROM plink y"
275 " WHERE y.pid=x.cid AND y.cid=x.pid)",
276
277 "SELECT pid FROM mlink x"
278 " WHERE fid=%d"
279 " AND NOT EXISTS(SELECT 1 FROM phantom WHERE rid=pid)"
280 " AND NOT EXISTS(SELECT 1 FROM mlink y"
281 " WHERE y.pid=x.fid AND y.fid=x.pid)"
282 };
283 int i;
284 Blob src, delta;
285 int size = 0;
286 int srcId = 0;
287
--- src/xfer.c
+++ src/xfer.c
@@ -268,19 +268,15 @@
268 Blob *pUuid /* The UUID of the file to send */
269 ){
270 static const char *azQuery[] = {
271 "SELECT pid FROM plink x"
272 " WHERE cid=%d"
273 " AND NOT EXISTS(SELECT 1 FROM phantom WHERE rid=pid)",
274
275 "SELECT pid, min(mtime) FROM mlink, event ON mlink.mid=event.objid"
 
 
276 " WHERE fid=%d"
277 " AND NOT EXISTS(SELECT 1 FROM phantom WHERE rid=pid)"
 
 
278 };
279 int i;
280 Blob src, delta;
281 int size = 0;
282 int srcId = 0;
283

Keyboard Shortcuts

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