Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Do not build clusters on a "rebuild" command unless the --cluster command-line option is used. But do build clusters on an "import" or a "reconstruct". |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
afc4bf41fa54d8038786b39001be2d68 |
| User & Date: | drh 2011-01-17 16:14:02.051 |
Context
|
2011-01-17
| ||
| 23:47 | Extra resilience on the automatic chroot mechanism. ... (check-in: 13d3cad50c user: drh tags: trunk) | |
| 16:14 | Do not build clusters on a "rebuild" command unless the --cluster command-line option is used. But do build clusters on an "import" or a "reconstruct". ... (check-in: afc4bf41fa user: drh tags: trunk) | |
| 02:39 | Update to the latest prerelease version fo SQLite 3.7.5. ... (check-in: 464775a520 user: drh tags: trunk) | |
Changes
Changes to src/clone.c.
| ︙ | ︙ | |||
105 106 107 108 109 110 111 |
unlink(g.argv[3]);
fossil_fatal("server returned an error - clone aborted");
}
db_open_repository(g.argv[3]);
}
db_begin_transaction();
printf("Rebuilding repository meta-data...\n");
| | | 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
unlink(g.argv[3]);
fossil_fatal("server returned an error - clone aborted");
}
db_open_repository(g.argv[3]);
}
db_begin_transaction();
printf("Rebuilding repository meta-data...\n");
rebuild_db(0, 1, 0);
printf("project-id: %s\n", db_get("project-code", 0));
printf("server-id: %s\n", db_get("server-code", 0));
zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
printf("admin-user: %s (password is \"%s\")\n", g.zLogin, zPassword);
db_end_transaction(0);
}
|
Changes to src/import.c.
| ︙ | ︙ | |||
655 656 657 658 659 660 661 |
);
db_begin_transaction();
db_initial_setup(0, 0, 1);
git_fast_import(pIn);
db_end_transaction(0);
db_begin_transaction();
printf("Rebuilding repository meta-data...\n");
| | | 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 |
);
db_begin_transaction();
db_initial_setup(0, 0, 1);
git_fast_import(pIn);
db_end_transaction(0);
db_begin_transaction();
printf("Rebuilding repository meta-data...\n");
rebuild_db(0, 1, 1);
verify_cancel();
db_end_transaction(0);
printf("Vacuuming..."); fflush(stdout);
db_multi_exec("VACUUM");
printf(" ok\n");
printf("project-id: %s\n", db_get("project-code", 0));
printf("server-id: %s\n", db_get("server-code", 0));
|
| ︙ | ︙ |
Changes to src/rebuild.c.
| ︙ | ︙ | |||
241 242 243 244 245 246 247 | ** from scratch. ** ** If the randomize parameter is true, then the BLOBs are deliberately ** extracted in a random order. This feature is used to test the ** ability of fossil to accept records in any order and still ** construct a sane repository. */ | | | 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
** from scratch.
**
** If the randomize parameter is true, then the BLOBs are deliberately
** extracted in a random order. This feature is used to test the
** ability of fossil to accept records in any order and still
** construct a sane repository.
*/
int rebuild_db(int randomize, int doOut, int doClustering){
Stmt s;
int errCnt = 0;
char *zTable;
int incrSize;
bag_init(&bagDone);
ttyOutput = doOut;
|
| ︙ | ︙ | |||
326 327 328 329 330 331 332 |
db_finalize(&s);
manifest_crosslink_end();
rebuild_tag_trunk();
if( !g.fQuiet && totalSize>0 ){
processCnt += incrSize;
percent_complete((processCnt*1000)/totalSize);
}
| | > > > > > > > > > | | 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 |
db_finalize(&s);
manifest_crosslink_end();
rebuild_tag_trunk();
if( !g.fQuiet && totalSize>0 ){
processCnt += incrSize;
percent_complete((processCnt*1000)/totalSize);
}
if( doClustering ) create_cluster();
if( !g.fQuiet && totalSize>0 ){
processCnt += incrSize;
percent_complete((processCnt*1000)/totalSize);
}
if(!g.fQuiet && ttyOutput ){
printf("\n");
}
return errCnt;
}
/*
** COMMAND: rebuild
**
** Usage: %fossil rebuild ?REPOSITORY?
**
** Reconstruct the named repository database from the core
** records. Run this command after updating the fossil
** executable in a way that changes the database schema.
**
** Options:
**
** --noverify Skip the verification of changes to the BLOB table
** --force Force the rebuild to complete even if errors are seen
** --randomize Scan artifacts in a random order
** --cluster Compute clusters for unclustered artifacts
*/
void rebuild_database(void){
int forceFlag;
int randomizeFlag;
int errCnt;
int omitVerify;
int doClustering;
omitVerify = find_option("noverify",0,0)!=0;
forceFlag = find_option("force","f",0)!=0;
randomizeFlag = find_option("randomize", 0, 0)!=0;
doClustering = find_option("cluster", 0, 0)!=0;
if( g.argc==3 ){
db_open_repository(g.argv[2]);
}else{
db_find_and_open_repository(OPEN_ANY_SCHEMA, 0);
if( g.argc!=2 ){
usage("?REPOSITORY-FILENAME?");
}
db_close(1);
db_open_repository(g.zRepositoryName);
}
db_begin_transaction();
ttyOutput = 1;
errCnt = rebuild_db(randomizeFlag, 1, doClustering);
db_multi_exec(
"REPLACE INTO config(name,value) VALUES('content-schema','%s');"
"REPLACE INTO config(name,value) VALUES('aux-schema','%s');",
CONTENT_SCHEMA, AUX_SCHEMA
);
if( errCnt && !forceFlag ){
printf("%d errors. Rolling back changes. Use --force to force a commit.\n",
|
| ︙ | ︙ | |||
550 551 552 553 554 555 556 |
"INSERT INTO shun SELECT uuid FROM blob WHERE rid IN private;"
);
}
if( !bNeedRebuild ){
db_end_transaction(0);
db_multi_exec("VACUUM;");
}else{
| | | 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 |
"INSERT INTO shun SELECT uuid FROM blob WHERE rid IN private;"
);
}
if( !bNeedRebuild ){
db_end_transaction(0);
db_multi_exec("VACUUM;");
}else{
rebuild_db(0, 1, 0);
db_end_transaction(0);
}
}
/*
** Recursively read all files from the directory zPath and install
** every file read as a new artifact in the repository.
|
| ︙ | ︙ | |||
627 628 629 630 631 632 633 |
db_begin_transaction();
db_initial_setup(0, 0, 1);
printf("Reading files from directory \"%s\"...\n", g.argv[3]);
recon_read_dir(g.argv[3]);
printf("\nBuilding the Fossil repository...\n");
| | | 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 |
db_begin_transaction();
db_initial_setup(0, 0, 1);
printf("Reading files from directory \"%s\"...\n", g.argv[3]);
recon_read_dir(g.argv[3]);
printf("\nBuilding the Fossil repository...\n");
rebuild_db(0, 1, 1);
/* Reconstruct the private table. The private table contains the rid
** of every manifest that is tagged with "private" and every file that
** is not used by a manifest that is not private.
*/
db_multi_exec(
"CREATE TEMP TABLE private_ckin(rid INTEGER PRIMARY KEY);"
|
| ︙ | ︙ |
Changes to src/shun.c.
| ︙ | ︙ | |||
49 50 51 52 53 54 55 |
if( !g.okAdmin ){
login_needed();
}
if( P("rebuild") ){
db_close(1);
db_open_repository(g.zRepositoryName);
db_begin_transaction();
| | | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
if( !g.okAdmin ){
login_needed();
}
if( P("rebuild") ){
db_close(1);
db_open_repository(g.zRepositoryName);
db_begin_transaction();
rebuild_db(0, 0, 0);
db_end_transaction(0);
}
if( zUuid ){
nUuid = strlen(zUuid);
if( nUuid!=40 || !validate16(zUuid, nUuid) ){
zUuid = 0;
}else{
|
| ︙ | ︙ |