Fossil SCM
Enhanced debugging output for the "fossil merge" command when using the (deliberately undocumented) --debug option.
Commit
32778cc06121812053e286e8a0c5b02f8d9ff413745404bb2d8eb5c204fdccd1
Parent
1ea1abe6c9bdf1e…
1 file changed
+63
-41
+63
-41
| --- src/merge.c | ||
| +++ src/merge.c | ||
| @@ -174,10 +174,40 @@ | ||
| 174 | 174 | "INSERT OR IGNORE INTO vmerge(id,merge,mhash)" |
| 175 | 175 | "VALUES(%d,%d,(SELECT uuid FROM blob WHERE rid=%d))", |
| 176 | 176 | id, rid, rid |
| 177 | 177 | ); |
| 178 | 178 | } |
| 179 | + | |
| 180 | +/* | |
| 181 | +** Print the contents of the "fv" table on standard output, for debugging | |
| 182 | +** purposes. | |
| 183 | +*/ | |
| 184 | +static void debug_fv_dump(void){ | |
| 185 | + Stmt q; | |
| 186 | + db_prepare(&q, | |
| 187 | + "SELECT rowid, fn, fnp, fnm, chnged, ridv, ridp, ridm, " | |
| 188 | + " isexe, islinkv, islinkm, fnn FROM fv" | |
| 189 | + ); | |
| 190 | + while( db_step(&q)==SQLITE_ROW ){ | |
| 191 | + fossil_print("%3d: ridv=%-4d ridp=%-4d ridm=%-4d chnged=%d isexe=%d " | |
| 192 | + " islinkv=%d islinkm=%d\n", | |
| 193 | + db_column_int(&q, 0), | |
| 194 | + db_column_int(&q, 5), | |
| 195 | + db_column_int(&q, 6), | |
| 196 | + db_column_int(&q, 7), | |
| 197 | + db_column_int(&q, 4), | |
| 198 | + db_column_int(&q, 8), | |
| 199 | + db_column_int(&q, 9), | |
| 200 | + db_column_int(&q, 10)); | |
| 201 | + fossil_print(" fn = [%s]\n", db_column_text(&q, 1)); | |
| 202 | + fossil_print(" fnp = [%s]\n", db_column_text(&q, 2)); | |
| 203 | + fossil_print(" fnm = [%s]\n", db_column_text(&q, 3)); | |
| 204 | + fossil_print(" fnn = [%s]\n", db_column_text(&q, 11)); | |
| 205 | + } | |
| 206 | + db_finalize(&q); | |
| 207 | +} | |
| 208 | + | |
| 179 | 209 | |
| 180 | 210 | /* |
| 181 | 211 | ** COMMAND: merge |
| 182 | 212 | ** |
| 183 | 213 | ** Usage: %fossil merge ?OPTIONS? ?VERSION? |
| @@ -441,41 +471,41 @@ | ||
| 441 | 471 | ) ? 'p' : 'n'; |
| 442 | 472 | } |
| 443 | 473 | if( debugFlag ){ |
| 444 | 474 | char *z; |
| 445 | 475 | z = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", nid); |
| 446 | - fossil_print("N=%d %z\n", nid, z); | |
| 476 | + fossil_print("N=%-4d %z (file rename pivot)\n", nid, z); | |
| 447 | 477 | z = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", pid); |
| 448 | - fossil_print("P=%d %z\n", pid, z); | |
| 478 | + fossil_print("P=%-4d %z (file content pivot)\n", pid, z); | |
| 449 | 479 | z = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", mid); |
| 450 | - fossil_print("M=%d %z\n", mid, z); | |
| 480 | + fossil_print("M=%-4d %z (merged-in version)\n", mid, z); | |
| 451 | 481 | z = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid); |
| 452 | - fossil_print("V=%d %z\n", vid, z); | |
| 482 | + fossil_print("V=%-4d %z (current version)\n", vid, z); | |
| 453 | 483 | } |
| 454 | 484 | |
| 455 | 485 | /* |
| 456 | 486 | ** The vfile.pathname field is used to match files against each other. The |
| 457 | 487 | ** FV table contains one row for each each unique filename in |
| 458 | 488 | ** in the current checkout, the pivot, and the version being merged. |
| 459 | 489 | */ |
| 460 | 490 | db_multi_exec( |
| 461 | 491 | "DROP TABLE IF EXISTS fv;" |
| 462 | - "CREATE TEMP TABLE fv(" | |
| 463 | - " fn TEXT UNIQUE %s," /* The filename */ | |
| 464 | - " idv INTEGER DEFAULT 0," /* VFILE entry for current version */ | |
| 465 | - " idp INTEGER DEFAULT 0," /* VFILE entry for the pivot */ | |
| 466 | - " idm INTEGER DEFAULT 0," /* VFILE entry for version merging in */ | |
| 467 | - " chnged BOOLEAN," /* True if current version has been edited */ | |
| 468 | - " ridv INTEGER DEFAULT 0," /* Record ID for current version */ | |
| 469 | - " ridp INTEGER DEFAULT 0," /* Record ID for pivot */ | |
| 470 | - " ridm INTEGER DEFAULT 0," /* Record ID for merge */ | |
| 471 | - " isexe BOOLEAN," /* Execute permission enabled */ | |
| 472 | - " fnp TEXT UNIQUE %s," /* The filename in the pivot */ | |
| 473 | - " fnm TEXT UNIQUE %s," /* The filename in the merged version */ | |
| 474 | - " fnn TEXT UNIQUE %s," /* The filename in the name pivot */ | |
| 475 | - " islinkv BOOLEAN," /* True if current version is a symlink */ | |
| 476 | - " islinkm BOOLEAN" /* True if merged version in is a symlink */ | |
| 492 | + "CREATE TEMP TABLE fv(\n" | |
| 493 | + " fn TEXT UNIQUE %s,\n" /* The filename */ | |
| 494 | + " idv INTEGER DEFAULT 0,\n" /* VFILE entry for current version */ | |
| 495 | + " idp INTEGER DEFAULT 0,\n" /* VFILE entry for the pivot */ | |
| 496 | + " idm INTEGER DEFAULT 0,\n" /* VFILE entry for version merging in */ | |
| 497 | + " chnged BOOLEAN,\n" /* True if current version has been edited */ | |
| 498 | + " ridv INTEGER DEFAULT 0,\n" /* Record ID for current version */ | |
| 499 | + " ridp INTEGER DEFAULT 0,\n" /* Record ID for pivot */ | |
| 500 | + " ridm INTEGER DEFAULT 0,\n" /* Record ID for merge */ | |
| 501 | + " isexe BOOLEAN,\n" /* Execute permission enabled */ | |
| 502 | + " fnp TEXT UNIQUE %s,\n" /* The filename in the pivot */ | |
| 503 | + " fnm TEXT UNIQUE %s,\n" /* The filename in the merged version */ | |
| 504 | + " fnn TEXT UNIQUE %s,\n" /* The filename in the name pivot */ | |
| 505 | + " islinkv BOOLEAN,\n" /* True if current version is a symlink */ | |
| 506 | + " islinkm BOOLEAN\n" /* True if merged version in is a symlink */ | |
| 477 | 507 | ");", |
| 478 | 508 | filename_collation(), filename_collation(), filename_collation(), |
| 479 | 509 | filename_collation() |
| 480 | 510 | ); |
| 481 | 511 | |
| @@ -483,10 +513,14 @@ | ||
| 483 | 513 | ** Compute name changes from N to V, P, and M |
| 484 | 514 | */ |
| 485 | 515 | add_renames("fn", vid, nid, 0, debugFlag ? "N->V" : 0); |
| 486 | 516 | add_renames("fnp", pid, nid, 0, debugFlag ? "N->P" : 0); |
| 487 | 517 | add_renames("fnm", mid, nid, backoutFlag, debugFlag ? "N->M" : 0); |
| 518 | + if( debugFlag ){ | |
| 519 | + fossil_print("******** FV after name change search *******\n"); | |
| 520 | + debug_fv_dump(); | |
| 521 | + } | |
| 488 | 522 | |
| 489 | 523 | /* |
| 490 | 524 | ** Add files found in V |
| 491 | 525 | */ |
| 492 | 526 | db_multi_exec( |
| @@ -497,10 +531,14 @@ | ||
| 497 | 531 | " LEFT JOIN fv ON fn=coalesce(origname,pathname)" |
| 498 | 532 | " AND rid>0 AND vf.chnged NOT IN (3,5)" |
| 499 | 533 | " WHERE vid=%d;", |
| 500 | 534 | vAncestor, vid |
| 501 | 535 | ); |
| 536 | + if( debugFlag ){ | |
| 537 | + fossil_print("******** FV after adding files in current version *******\n"); | |
| 538 | + debug_fv_dump(); | |
| 539 | + } | |
| 502 | 540 | |
| 503 | 541 | /* |
| 504 | 542 | ** Add files found in P |
| 505 | 543 | */ |
| 506 | 544 | db_multi_exec( |
| @@ -519,10 +557,14 @@ | ||
| 519 | 557 | "UPDATE OR IGNORE fv SET fnm=fnp WHERE fnm IS NULL;" |
| 520 | 558 | "INSERT OR IGNORE INTO fv(fnm)" |
| 521 | 559 | " SELECT pathname FROM vfile WHERE vid=%d;", |
| 522 | 560 | mid |
| 523 | 561 | ); |
| 562 | + if( debugFlag ){ | |
| 563 | + fossil_print("******** FV after adding pivot and merge-in files *******\n"); | |
| 564 | + debug_fv_dump(); | |
| 565 | + } | |
| 524 | 566 | |
| 525 | 567 | /* |
| 526 | 568 | ** Compute the file version ids for P and M |
| 527 | 569 | */ |
| 528 | 570 | if( pid==vid ){ |
| @@ -545,33 +587,13 @@ | ||
| 545 | 587 | " WHERE vid=%d AND fnm=pathname),0)," |
| 546 | 588 | " isexe=coalesce((SELECT isexe FROM vfile WHERE vid=%d AND fnm=pathname)," |
| 547 | 589 | " isexe)", |
| 548 | 590 | mid, mid, mid, mid |
| 549 | 591 | ); |
| 550 | - | |
| 551 | 592 | if( debugFlag ){ |
| 552 | - db_prepare(&q, | |
| 553 | - "SELECT rowid, fn, fnp, fnm, chnged, ridv, ridp, ridm, " | |
| 554 | - " isexe, islinkv, islinkm, fnn FROM fv" | |
| 555 | - ); | |
| 556 | - while( db_step(&q)==SQLITE_ROW ){ | |
| 557 | - fossil_print("%3d: ridv=%-4d ridp=%-4d ridm=%-4d chnged=%d isexe=%d " | |
| 558 | - " islinkv=%d islinkm=%d\n", | |
| 559 | - db_column_int(&q, 0), | |
| 560 | - db_column_int(&q, 5), | |
| 561 | - db_column_int(&q, 6), | |
| 562 | - db_column_int(&q, 7), | |
| 563 | - db_column_int(&q, 4), | |
| 564 | - db_column_int(&q, 8), | |
| 565 | - db_column_int(&q, 9), | |
| 566 | - db_column_int(&q, 10)); | |
| 567 | - fossil_print(" fn = [%s]\n", db_column_text(&q, 1)); | |
| 568 | - fossil_print(" fnp = [%s]\n", db_column_text(&q, 2)); | |
| 569 | - fossil_print(" fnm = [%s]\n", db_column_text(&q, 3)); | |
| 570 | - fossil_print(" fnn = [%s]\n", db_column_text(&q, 11)); | |
| 571 | - } | |
| 572 | - db_finalize(&q); | |
| 593 | + fossil_print("******** FV Final *******\n"); | |
| 594 | + debug_fv_dump(); | |
| 573 | 595 | } |
| 574 | 596 | |
| 575 | 597 | /* |
| 576 | 598 | ** Update the execute bit on files where it's changed from P->M but not P->V |
| 577 | 599 | */ |
| 578 | 600 |
| --- src/merge.c | |
| +++ src/merge.c | |
| @@ -174,10 +174,40 @@ | |
| 174 | "INSERT OR IGNORE INTO vmerge(id,merge,mhash)" |
| 175 | "VALUES(%d,%d,(SELECT uuid FROM blob WHERE rid=%d))", |
| 176 | id, rid, rid |
| 177 | ); |
| 178 | } |
| 179 | |
| 180 | /* |
| 181 | ** COMMAND: merge |
| 182 | ** |
| 183 | ** Usage: %fossil merge ?OPTIONS? ?VERSION? |
| @@ -441,41 +471,41 @@ | |
| 441 | ) ? 'p' : 'n'; |
| 442 | } |
| 443 | if( debugFlag ){ |
| 444 | char *z; |
| 445 | z = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", nid); |
| 446 | fossil_print("N=%d %z\n", nid, z); |
| 447 | z = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", pid); |
| 448 | fossil_print("P=%d %z\n", pid, z); |
| 449 | z = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", mid); |
| 450 | fossil_print("M=%d %z\n", mid, z); |
| 451 | z = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid); |
| 452 | fossil_print("V=%d %z\n", vid, z); |
| 453 | } |
| 454 | |
| 455 | /* |
| 456 | ** The vfile.pathname field is used to match files against each other. The |
| 457 | ** FV table contains one row for each each unique filename in |
| 458 | ** in the current checkout, the pivot, and the version being merged. |
| 459 | */ |
| 460 | db_multi_exec( |
| 461 | "DROP TABLE IF EXISTS fv;" |
| 462 | "CREATE TEMP TABLE fv(" |
| 463 | " fn TEXT UNIQUE %s," /* The filename */ |
| 464 | " idv INTEGER DEFAULT 0," /* VFILE entry for current version */ |
| 465 | " idp INTEGER DEFAULT 0," /* VFILE entry for the pivot */ |
| 466 | " idm INTEGER DEFAULT 0," /* VFILE entry for version merging in */ |
| 467 | " chnged BOOLEAN," /* True if current version has been edited */ |
| 468 | " ridv INTEGER DEFAULT 0," /* Record ID for current version */ |
| 469 | " ridp INTEGER DEFAULT 0," /* Record ID for pivot */ |
| 470 | " ridm INTEGER DEFAULT 0," /* Record ID for merge */ |
| 471 | " isexe BOOLEAN," /* Execute permission enabled */ |
| 472 | " fnp TEXT UNIQUE %s," /* The filename in the pivot */ |
| 473 | " fnm TEXT UNIQUE %s," /* The filename in the merged version */ |
| 474 | " fnn TEXT UNIQUE %s," /* The filename in the name pivot */ |
| 475 | " islinkv BOOLEAN," /* True if current version is a symlink */ |
| 476 | " islinkm BOOLEAN" /* True if merged version in is a symlink */ |
| 477 | ");", |
| 478 | filename_collation(), filename_collation(), filename_collation(), |
| 479 | filename_collation() |
| 480 | ); |
| 481 | |
| @@ -483,10 +513,14 @@ | |
| 483 | ** Compute name changes from N to V, P, and M |
| 484 | */ |
| 485 | add_renames("fn", vid, nid, 0, debugFlag ? "N->V" : 0); |
| 486 | add_renames("fnp", pid, nid, 0, debugFlag ? "N->P" : 0); |
| 487 | add_renames("fnm", mid, nid, backoutFlag, debugFlag ? "N->M" : 0); |
| 488 | |
| 489 | /* |
| 490 | ** Add files found in V |
| 491 | */ |
| 492 | db_multi_exec( |
| @@ -497,10 +531,14 @@ | |
| 497 | " LEFT JOIN fv ON fn=coalesce(origname,pathname)" |
| 498 | " AND rid>0 AND vf.chnged NOT IN (3,5)" |
| 499 | " WHERE vid=%d;", |
| 500 | vAncestor, vid |
| 501 | ); |
| 502 | |
| 503 | /* |
| 504 | ** Add files found in P |
| 505 | */ |
| 506 | db_multi_exec( |
| @@ -519,10 +557,14 @@ | |
| 519 | "UPDATE OR IGNORE fv SET fnm=fnp WHERE fnm IS NULL;" |
| 520 | "INSERT OR IGNORE INTO fv(fnm)" |
| 521 | " SELECT pathname FROM vfile WHERE vid=%d;", |
| 522 | mid |
| 523 | ); |
| 524 | |
| 525 | /* |
| 526 | ** Compute the file version ids for P and M |
| 527 | */ |
| 528 | if( pid==vid ){ |
| @@ -545,33 +587,13 @@ | |
| 545 | " WHERE vid=%d AND fnm=pathname),0)," |
| 546 | " isexe=coalesce((SELECT isexe FROM vfile WHERE vid=%d AND fnm=pathname)," |
| 547 | " isexe)", |
| 548 | mid, mid, mid, mid |
| 549 | ); |
| 550 | |
| 551 | if( debugFlag ){ |
| 552 | db_prepare(&q, |
| 553 | "SELECT rowid, fn, fnp, fnm, chnged, ridv, ridp, ridm, " |
| 554 | " isexe, islinkv, islinkm, fnn FROM fv" |
| 555 | ); |
| 556 | while( db_step(&q)==SQLITE_ROW ){ |
| 557 | fossil_print("%3d: ridv=%-4d ridp=%-4d ridm=%-4d chnged=%d isexe=%d " |
| 558 | " islinkv=%d islinkm=%d\n", |
| 559 | db_column_int(&q, 0), |
| 560 | db_column_int(&q, 5), |
| 561 | db_column_int(&q, 6), |
| 562 | db_column_int(&q, 7), |
| 563 | db_column_int(&q, 4), |
| 564 | db_column_int(&q, 8), |
| 565 | db_column_int(&q, 9), |
| 566 | db_column_int(&q, 10)); |
| 567 | fossil_print(" fn = [%s]\n", db_column_text(&q, 1)); |
| 568 | fossil_print(" fnp = [%s]\n", db_column_text(&q, 2)); |
| 569 | fossil_print(" fnm = [%s]\n", db_column_text(&q, 3)); |
| 570 | fossil_print(" fnn = [%s]\n", db_column_text(&q, 11)); |
| 571 | } |
| 572 | db_finalize(&q); |
| 573 | } |
| 574 | |
| 575 | /* |
| 576 | ** Update the execute bit on files where it's changed from P->M but not P->V |
| 577 | */ |
| 578 |
| --- src/merge.c | |
| +++ src/merge.c | |
| @@ -174,10 +174,40 @@ | |
| 174 | "INSERT OR IGNORE INTO vmerge(id,merge,mhash)" |
| 175 | "VALUES(%d,%d,(SELECT uuid FROM blob WHERE rid=%d))", |
| 176 | id, rid, rid |
| 177 | ); |
| 178 | } |
| 179 | |
| 180 | /* |
| 181 | ** Print the contents of the "fv" table on standard output, for debugging |
| 182 | ** purposes. |
| 183 | */ |
| 184 | static void debug_fv_dump(void){ |
| 185 | Stmt q; |
| 186 | db_prepare(&q, |
| 187 | "SELECT rowid, fn, fnp, fnm, chnged, ridv, ridp, ridm, " |
| 188 | " isexe, islinkv, islinkm, fnn FROM fv" |
| 189 | ); |
| 190 | while( db_step(&q)==SQLITE_ROW ){ |
| 191 | fossil_print("%3d: ridv=%-4d ridp=%-4d ridm=%-4d chnged=%d isexe=%d " |
| 192 | " islinkv=%d islinkm=%d\n", |
| 193 | db_column_int(&q, 0), |
| 194 | db_column_int(&q, 5), |
| 195 | db_column_int(&q, 6), |
| 196 | db_column_int(&q, 7), |
| 197 | db_column_int(&q, 4), |
| 198 | db_column_int(&q, 8), |
| 199 | db_column_int(&q, 9), |
| 200 | db_column_int(&q, 10)); |
| 201 | fossil_print(" fn = [%s]\n", db_column_text(&q, 1)); |
| 202 | fossil_print(" fnp = [%s]\n", db_column_text(&q, 2)); |
| 203 | fossil_print(" fnm = [%s]\n", db_column_text(&q, 3)); |
| 204 | fossil_print(" fnn = [%s]\n", db_column_text(&q, 11)); |
| 205 | } |
| 206 | db_finalize(&q); |
| 207 | } |
| 208 | |
| 209 | |
| 210 | /* |
| 211 | ** COMMAND: merge |
| 212 | ** |
| 213 | ** Usage: %fossil merge ?OPTIONS? ?VERSION? |
| @@ -441,41 +471,41 @@ | |
| 471 | ) ? 'p' : 'n'; |
| 472 | } |
| 473 | if( debugFlag ){ |
| 474 | char *z; |
| 475 | z = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", nid); |
| 476 | fossil_print("N=%-4d %z (file rename pivot)\n", nid, z); |
| 477 | z = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", pid); |
| 478 | fossil_print("P=%-4d %z (file content pivot)\n", pid, z); |
| 479 | z = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", mid); |
| 480 | fossil_print("M=%-4d %z (merged-in version)\n", mid, z); |
| 481 | z = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid); |
| 482 | fossil_print("V=%-4d %z (current version)\n", vid, z); |
| 483 | } |
| 484 | |
| 485 | /* |
| 486 | ** The vfile.pathname field is used to match files against each other. The |
| 487 | ** FV table contains one row for each each unique filename in |
| 488 | ** in the current checkout, the pivot, and the version being merged. |
| 489 | */ |
| 490 | db_multi_exec( |
| 491 | "DROP TABLE IF EXISTS fv;" |
| 492 | "CREATE TEMP TABLE fv(\n" |
| 493 | " fn TEXT UNIQUE %s,\n" /* The filename */ |
| 494 | " idv INTEGER DEFAULT 0,\n" /* VFILE entry for current version */ |
| 495 | " idp INTEGER DEFAULT 0,\n" /* VFILE entry for the pivot */ |
| 496 | " idm INTEGER DEFAULT 0,\n" /* VFILE entry for version merging in */ |
| 497 | " chnged BOOLEAN,\n" /* True if current version has been edited */ |
| 498 | " ridv INTEGER DEFAULT 0,\n" /* Record ID for current version */ |
| 499 | " ridp INTEGER DEFAULT 0,\n" /* Record ID for pivot */ |
| 500 | " ridm INTEGER DEFAULT 0,\n" /* Record ID for merge */ |
| 501 | " isexe BOOLEAN,\n" /* Execute permission enabled */ |
| 502 | " fnp TEXT UNIQUE %s,\n" /* The filename in the pivot */ |
| 503 | " fnm TEXT UNIQUE %s,\n" /* The filename in the merged version */ |
| 504 | " fnn TEXT UNIQUE %s,\n" /* The filename in the name pivot */ |
| 505 | " islinkv BOOLEAN,\n" /* True if current version is a symlink */ |
| 506 | " islinkm BOOLEAN\n" /* True if merged version in is a symlink */ |
| 507 | ");", |
| 508 | filename_collation(), filename_collation(), filename_collation(), |
| 509 | filename_collation() |
| 510 | ); |
| 511 | |
| @@ -483,10 +513,14 @@ | |
| 513 | ** Compute name changes from N to V, P, and M |
| 514 | */ |
| 515 | add_renames("fn", vid, nid, 0, debugFlag ? "N->V" : 0); |
| 516 | add_renames("fnp", pid, nid, 0, debugFlag ? "N->P" : 0); |
| 517 | add_renames("fnm", mid, nid, backoutFlag, debugFlag ? "N->M" : 0); |
| 518 | if( debugFlag ){ |
| 519 | fossil_print("******** FV after name change search *******\n"); |
| 520 | debug_fv_dump(); |
| 521 | } |
| 522 | |
| 523 | /* |
| 524 | ** Add files found in V |
| 525 | */ |
| 526 | db_multi_exec( |
| @@ -497,10 +531,14 @@ | |
| 531 | " LEFT JOIN fv ON fn=coalesce(origname,pathname)" |
| 532 | " AND rid>0 AND vf.chnged NOT IN (3,5)" |
| 533 | " WHERE vid=%d;", |
| 534 | vAncestor, vid |
| 535 | ); |
| 536 | if( debugFlag ){ |
| 537 | fossil_print("******** FV after adding files in current version *******\n"); |
| 538 | debug_fv_dump(); |
| 539 | } |
| 540 | |
| 541 | /* |
| 542 | ** Add files found in P |
| 543 | */ |
| 544 | db_multi_exec( |
| @@ -519,10 +557,14 @@ | |
| 557 | "UPDATE OR IGNORE fv SET fnm=fnp WHERE fnm IS NULL;" |
| 558 | "INSERT OR IGNORE INTO fv(fnm)" |
| 559 | " SELECT pathname FROM vfile WHERE vid=%d;", |
| 560 | mid |
| 561 | ); |
| 562 | if( debugFlag ){ |
| 563 | fossil_print("******** FV after adding pivot and merge-in files *******\n"); |
| 564 | debug_fv_dump(); |
| 565 | } |
| 566 | |
| 567 | /* |
| 568 | ** Compute the file version ids for P and M |
| 569 | */ |
| 570 | if( pid==vid ){ |
| @@ -545,33 +587,13 @@ | |
| 587 | " WHERE vid=%d AND fnm=pathname),0)," |
| 588 | " isexe=coalesce((SELECT isexe FROM vfile WHERE vid=%d AND fnm=pathname)," |
| 589 | " isexe)", |
| 590 | mid, mid, mid, mid |
| 591 | ); |
| 592 | if( debugFlag ){ |
| 593 | fossil_print("******** FV Final *******\n"); |
| 594 | debug_fv_dump(); |
| 595 | } |
| 596 | |
| 597 | /* |
| 598 | ** Update the execute bit on files where it's changed from P->M but not P->V |
| 599 | */ |
| 600 |