@@ -1187,16 +1187,18 @@
1187 1187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1188 1188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Add a single entry to the mlink table. Also add the filename to
1189 1189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the filename table if it is not there already.
1190 1190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1191 1191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void add_one_mlink(
1192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int pmid, /* The parent manifest */
1193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zFromUuid, /* UUID for content in parent */
1192 1194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mid, /* The record ID of the manifest */
1193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zFromUuid, /* UUID for the mlink.pid. "" to add file */
1194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zToUuid, /* UUID for the mlink.fid. "" to delete */
1195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zToUuid, /* UUID for content in child */
1195 1196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFilename, /* Filename */
1196 1197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zPrior, /* Previous filename. NULL if unchanged */
1197 1198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isPublic, /* True if mid is not a private manifest */
1199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int isPrimary, /* pmid is the primary parent of mid */
1198 1200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mperm /* 1: exec, 2: symlink */
1199 1201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
1200 1202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fnid, pfnid, pid, fid;
1201 1203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static Stmt s1;
1202 1204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -1216,19 +1218,21 @@
1216 1218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1217 1219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fid = uuid_to_rid(zToUuid, 1);
1218 1220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isPublic ) content_make_public(fid);
1219 1221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1220 1222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_static_prepare(&s1,
1221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "INSERT INTO mlink(mid,pid,fid,fnid,pfnid,mperm)"
1222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "VALUES(:m,:p,:f,:n,:pfn,:mp)"
1223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "INSERT INTO mlink(mid,fid,pmid,pid,fnid,pfnid,mperm,isaux)"
1224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "VALUES(:m,:f,:pm,:p,:n,:pfn,:mp,:isaux)"
1223 1225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
1224 1226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_bind_int(&s1, ":m", mid);
1225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_bind_int(&s1, ":p", pid);
1226 1227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_bind_int(&s1, ":f", fid);
1228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_bind_int(&s1, ":pm", pmid);
1229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_bind_int(&s1, ":p", pid);
1227 1230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_bind_int(&s1, ":n", fnid);
1228 1231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_bind_int(&s1, ":pfn", pfnid);
1229 1232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_bind_int(&s1, ":mp", mperm);
1233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_bind_int(&s1, ":isaux", isPrimary==0);
1230 1234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_exec(&s1);
1231 1235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pid && fid ){
1232 1236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content_deltify(pid, fid, 0);
1233 1237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1234 1238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -1342,24 +1346,29 @@
1342 1346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1343 1347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Deleted files have mlink.fid=0.
1344 1348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Added files have mlink.pid=0.
1345 1349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Edited files have both mlink.pid!=0 and mlink.fid!=0
1346 1350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void add_mlink(int pid, Manifest *pParent, int cid, Manifest *pChild){
1351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void add_mlink(
1352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int pmid, Manifest *pParent, /* Parent check-in */
1353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int mid, Manifest *pChild, /* The child check-in */
1354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int isPrim /* TRUE if pmid is the primary parent of mid */
1355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
1348 1356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob otherContent;
1349 1357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int otherRid;
1350 1358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, rc;
1351 1359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ManifestFile *pChildFile, *pParentFile;
1352 1360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Manifest **ppOther;
1353 1361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static Stmt eq;
1354 1362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isPublic; /* True if pChild is non-private */
1355 1363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* If mlink table entires are already set for cid, then abort early
1357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** doing no work.
1364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If mlink table entires are already exist for the pmid-to-mid transition,
1365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** then abort early doing no work.
1358 1366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_static_prepare(&eq, "SELECT 1 FROM mlink WHERE mid=:mid");
1360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_bind_int(&eq, ":mid", cid);
1367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_static_prepare(&eq, "SELECT 1 FROM mlink WHERE mid=:mid AND pmid=:pmid");
1368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_bind_int(&eq, ":mid", mid);
1369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_bind_int(&eq, ":pmid", pmid);
1361 1370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = db_step(&eq);
1362 1371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_reset(&eq);
1363 1372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc==SQLITE_ROW ) return;
1364 1373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1365 1374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Compute the value of the missing pParent or pChild parameter.
@@ -1366,14 +1375,14 @@
1366 1375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Fetch the baseline checkins for both.
1367 1376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1368 1377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( pParent==0 || pChild==0 );
1369 1378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParent==0 ){
1370 1379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ppOther = &pParent;
1371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- otherRid = pid;
1380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ otherRid = pmid;
1372 1381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1373 1382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ppOther = &pChild;
1374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- otherRid = cid;
1383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ otherRid = mid;
1375 1384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1376 1385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (*ppOther = manifest_cache_find(otherRid))==0 ){
1377 1386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content_get(otherRid, &otherContent);
1378 1387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( blob_size(&otherContent)==0 ) return;
1379 1388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*ppOther = manifest_parse(&otherContent, otherRid, 0);
@@ -1381,20 +1390,20 @@
1381 1390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1382 1391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fetch_baseline(pParent, 0) || fetch_baseline(pChild, 0) ){
1383 1392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
manifest_destroy(*ppOther);
1384 1393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
1385 1394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- isPublic = !content_is_private(cid);
1395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isPublic = !content_is_private(mid);
1387 1396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1388 1397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Try to make the parent manifest a delta from the child, if that
1389 1398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** is an appropriate thing to do. For a new baseline, make the
1390 1399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** previous baseline a delta from the current baseline.
1391 1400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1392 1401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (pParent->zBaseline==0)==(pChild->zBaseline==0) ){
1393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- content_deltify(pid, cid, 0);
1402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_deltify(pmid, mid, 0);
1394 1403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pChild->zBaseline==0 && pParent->zBaseline!=0 ){
1395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- content_deltify(pParent->pBaseline->rid, cid, 0);
1404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_deltify(pParent->pBaseline->rid, mid, 0);
1396 1405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1397 1406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1398 1407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Remember all children less than a few seconds younger than their parent,
1399 1408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** as we might want to fudge the times for those children.
1400 1409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -1414,31 +1423,32 @@
1414 1423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mperm = manifest_file_mperm(pChildFile);
1415 1424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pChildFile->zPrior ){
1416 1425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParentFile = manifest_file_seek(pParent, pChildFile->zPrior, 0);
1417 1426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParentFile ){
1418 1427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* File with name change */
1419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- add_one_mlink(cid, pParentFile->zUuid, pChildFile->zUuid,
1420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pChildFile->zName, pChildFile->zPrior, isPublic, mperm);
1428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ add_one_mlink(pmid, pParentFile->zUuid, mid, pChildFile->zUuid,
1429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pChildFile->zName, pChildFile->zPrior,
1430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isPublic, isPrim, mperm);
1421 1431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1422 1432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* File name changed, but the old name is not found in the parent!
1423 1433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Treat this like a new file. */
1424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- add_one_mlink(cid, 0, pChildFile->zUuid, pChildFile->zName, 0,
1425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- isPublic, mperm);
1434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ add_one_mlink(pmid, 0, mid, pChildFile->zUuid, pChildFile->zName, 0,
1435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isPublic, isPrim, mperm);
1426 1436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1427 1437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1428 1438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pParentFile = manifest_file_seek(pParent, pChildFile->zName, 0);
1429 1439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParentFile==0 ){
1430 1440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pChildFile->zUuid ){
1431 1441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* A new file */
1432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- add_one_mlink(cid, 0, pChildFile->zUuid, pChildFile->zName, 0,
1433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- isPublic, mperm);
1442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ add_one_mlink(pmid, 0, mid, pChildFile->zUuid, pChildFile->zName, 0,
1443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isPublic, isPrim, mperm);
1434 1444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1435 1445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( fossil_strcmp(pChildFile->zUuid, pParentFile->zUuid)!=0
1436 1446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
|| manifest_file_mperm(pParentFile)!=mperm ){
1437 1447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Changes in file content or permissions */
1438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- add_one_mlink(cid, pParentFile->zUuid, pChildFile->zUuid,
1439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pChildFile->zName, 0, isPublic, mperm);
1448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ add_one_mlink(pmid, pParentFile->zUuid, mid, pChildFile->zUuid,
1449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pChildFile->zName, 0, isPublic, isPrim, mperm);
1440 1450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1441 1451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1442 1452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1443 1453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pParent->zBaseline && pChild->zBaseline ){
1444 1454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Both parent and child are delta manifests. Look for files that
@@ -1450,22 +1460,22 @@
1450 1460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pChildFile = manifest_file_seek_base(pChild, pParentFile->zName, 0);
1451 1461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pChildFile==0 ){
1452 1462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The child file reverts to baseline. Show this as a change */
1453 1463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pChildFile = manifest_file_seek(pChild, pParentFile->zName, 0);
1454 1464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pChildFile ){
1455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- add_one_mlink(cid, pParentFile->zUuid, pChildFile->zUuid,
1456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pChildFile->zName, 0, isPublic,
1465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ add_one_mlink(pmid, pParentFile->zUuid, mid, pChildFile->zUuid,
1466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pChildFile->zName, 0, isPublic, isPrim,
1457 1467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
manifest_file_mperm(pChildFile));
1458 1468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1459 1469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1460 1470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1461 1471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pChildFile = manifest_file_seek(pChild, pParentFile->zName, 0);
1462 1472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pChildFile ){
1463 1473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* File resurrected in the child after having been deleted in
1464 1474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the parent. Show this as an added file. */
1465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- add_one_mlink(cid, 0, pChildFile->zUuid, pChildFile->zName, 0,
1466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- isPublic, manifest_file_mperm(pChildFile));
1475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ add_one_mlink(pmid, 0, mid, pChildFile->zUuid, pChildFile->zName, 0,
1476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isPublic, isPrim, manifest_file_mperm(pChildFile));
1467 1477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1468 1478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1469 1479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1470 1480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( pChild->zBaseline==0 ){
1471 1481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* pChild is a baseline. Look for files that are present in pParent
@@ -1472,12 +1482,12 @@
1472 1482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** but are missing from pChild and mark them as having been deleted. */
1473 1483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
manifest_file_rewind(pParent);
1474 1484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( (pParentFile = manifest_file_next(pParent,0))!=0 ){
1475 1485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pChildFile = manifest_file_seek(pChild, pParentFile->zName, 0);
1476 1486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pChildFile==0 && pParentFile->zUuid!=0 ){
1477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- add_one_mlink(cid, pParentFile->zUuid, 0, pParentFile->zName, 0,
1478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- isPublic, 0);
1487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ add_one_mlink(pmid, pParentFile->zUuid, mid, 0, pParentFile->zName, 0,
1488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isPublic, isPrim, 0);
1479 1489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1480 1490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1481 1491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1482 1492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
manifest_cache_insert(*ppOther);
1483 1493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -1781,45 +1791,46 @@
1781 1791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(zBaseId), zBaseId, "%d",
1782 1792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
uuid_to_rid(p->zBaseline,1));
1783 1793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1784 1794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_snprintf(sizeof(zBaseId), zBaseId, "NULL");
1785 1795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (void)db_schema_is_outofdate(); /* Make sure g.zAuxSchema is initialized */
1787 1796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<p->nParent; i++){
1788 1797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int pid = uuid_to_rid(p->azParent[i], 1);
1789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( strcmp(g.zAuxSchema,"2014-11-24 20:35")>=0 ){
1790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Support for PLINK.BASEID added on 2014-11-24 */
1791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_multi_exec(
1792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "INSERT OR IGNORE INTO plink(pid, cid, isprim, mtime, baseid)"
1793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "VALUES(%d, %d, %d, %.17g, %s)",
1794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pid, rid, i==0, p->rDate, zBaseId/*safe-for-%s*/);
1795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
1796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Continue to work with older schema to avoid an unnecessary
1797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** rebuild */
1798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_multi_exec(
1799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "INSERT OR IGNORE INTO plink(pid, cid, isprim, mtime)"
1800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "VALUES(%d, %d, %d, %.17g)",
1801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pid, rid, i==0, p->rDate);
1802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( i==0 ){
1804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- add_mlink(pid, 0, rid, p);
1805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- parentid = pid;
1806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_prepare(&q, "SELECT cid FROM plink WHERE pid=%d AND isprim", rid);
1798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
1799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "INSERT OR IGNORE INTO plink(pid, cid, isprim, mtime, baseid)"
1800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "VALUES(%d, %d, %d, %.17g, %s)",
1801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pid, rid, i==0, p->rDate, zBaseId/*safe-for-%s*/);
1802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ add_mlink(pid, 0, rid, p, i);
1803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( i==0 ) parentid = pid;
1804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( p->nParent>1 ){
1806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Remove incorrect MLINK create-file entries that arise when a
1807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** file is added by merge. */
1808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
1809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "DELETE FROM mlink"
1810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE mid=%d"
1811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND pid=0"
1812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND fnid IN "
1813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " (SELECT fnid FROM mlink WHERE mid=%d GROUP BY fnid"
1814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " HAVING count(*)<%d)",
1815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rid, rid, p->nParent
1816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
1817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&q, "SELECT cid, isprim FROM plink WHERE pid=%d", rid);
1809 1819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( db_step(&q)==SQLITE_ROW ){
1810 1820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int cid = db_column_int(&q, 0);
1811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- add_mlink(rid, p, cid, 0);
1821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int isprim = db_column_int(&q, 1);
1822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ add_mlink(rid, p, cid, 0, isprim);
1812 1823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1813 1824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
1814 1825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( p->nParent==0 ){
1815 1826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* For root files (files without parents) add mlink entries
1816 1827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** showing all content as new. */
1817 1828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isPublic = !content_is_private(rid);
1818 1829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<p->nFile; i++){
1819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- add_one_mlink(rid, 0, p->aFile[i].zUuid, p->aFile[i].zName, 0,
1820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- isPublic, manifest_file_mperm(&p->aFile[i]));
1830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ add_one_mlink(0, 0, rid, p->aFile[i].zUuid, p->aFile[i].zName, 0,
1831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isPublic, 1, manifest_file_mperm(&p->aFile[i]));
1821 1832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1822 1833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1823 1834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(
1824 1835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"REPLACE INTO event(type,mtime,objid,user,comment,"
1825 1836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"bgcolor,euser,ecomment,omtime)"
1826 1837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!