Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Bug fix: If a repository contains public artifacts that are deltas from private artifacts, expand the artifact content prior to cloning. |
|---|---|
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
8d155c5f1f89ebe97d8bf14e0eeba89c |
| User & Date: | drh 2011-11-30 17:26:36.427 |
Context
|
2011-12-06
| ||
| 00:09 | The finfo command and the file browsing pages of the web UI now honor the case-sensitive option and merge filenames that differ only in case as requested. check-in: 9c90b0f052 user: drh tags: trunk | |
|
2011-11-30
| ||
| 17:26 | Bug fix: If a repository contains public artifacts that are deltas from private artifacts, expand the artifact content prior to cloning. check-in: 8d155c5f1f user: drh tags: trunk | |
| 16:33 | Improvements to the test-integrity command so that it detects the kinds of repository problems injected when cloning a repo that contains private check-ins. check-in: 697d6bfd8e user: drh tags: trunk | |
Changes
Changes to src/xfer.c.
| ︙ | ︙ | |||
441 442 443 444 445 446 447 448 449 450 451 452 | const char *zContent; const char *zUuid; const char *zDelta; int szU; int szC; int rc; int isPrivate; static Stmt q1; isPrivate = content_is_private(rid); if( isPrivate && pXfer->syncPrivate==0 ) return; db_static_prepare(&q1, | > > | | < | | | > | > > > > > > > > | > > > | 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 |
const char *zContent;
const char *zUuid;
const char *zDelta;
int szU;
int szC;
int rc;
int isPrivate;
int srcIsPrivate;
static Stmt q1;
Blob fullContent;
isPrivate = content_is_private(rid);
if( isPrivate && pXfer->syncPrivate==0 ) return;
db_static_prepare(&q1,
"SELECT uuid, size, content, delta.srcid IN private,"
" (SELECT uuid FROM blob WHERE rid=delta.srcid)"
" FROM blob LEFT JOIN delta ON (blob.rid=delta.rid)"
" WHERE blob.rid=:rid"
" AND blob.size>=0"
" AND NOT EXISTS(SELECT 1 FROM shun WHERE shun.uuid=blob.uuid)"
);
db_bind_int(&q1, ":rid", rid);
rc = db_step(&q1);
if( rc==SQLITE_ROW ){
zUuid = db_column_text(&q1, 0);
szU = db_column_int(&q1, 1);
szC = db_column_bytes(&q1, 2);
zContent = db_column_raw(&q1, 2);
srcIsPrivate = db_column_int(&q1, 3);
zDelta = db_column_text(&q1, 4);
if( isPrivate ) blob_append(pXfer->pOut, "private\n", -1);
blob_appendf(pXfer->pOut, "cfile %s ", zUuid);
if( !isPrivate && srcIsPrivate ){
content_get(rid, &fullContent);
szU = blob_size(&fullContent);
blob_compress(&fullContent, &fullContent);
szC = blob_size(&fullContent);
zContent = blob_buffer(&fullContent);
zDelta = 0;
}
if( zDelta ){
blob_appendf(pXfer->pOut, "%s ", zDelta);
pXfer->nDeltaSent++;
}else{
pXfer->nFileSent++;
}
blob_appendf(pXfer->pOut, "%d %d\n", szU, szC);
blob_append(pXfer->pOut, zContent, szC);
if( blob_buffer(pXfer->pOut)[blob_size(pXfer->pOut)-1]!='\n' ){
blob_appendf(pXfer->pOut, "\n", 1);
}
if( !isPrivate && srcIsPrivate ){
blob_reset(&fullContent);
}
}
db_reset(&q1);
}
/*
** Send a gimme message for every phantom.
|
| ︙ | ︙ |