Fossil SCM
Gather more transformations for merge-info in a "fossil update".
Commit
565a49062c741c9d79909c92955b49e97f3e7a87a840e7aac5f65e634d795ea4
Parent
3a18c95df49f95a…
1 file changed
+34
-19
+34
-19
| --- src/update.c | ||
| +++ src/update.c | ||
| @@ -423,13 +423,18 @@ | ||
| 423 | 423 | int islinkt = db_column_int(&q, 9); /* Is target file is a link */ |
| 424 | 424 | int deleted = db_column_int(&q, 10); /* Marked for deletion */ |
| 425 | 425 | char *zFullPath; /* Full pathname of the file */ |
| 426 | 426 | char *zFullNewPath; /* Full pathname of dest */ |
| 427 | 427 | char nameChng; /* True if the name changed */ |
| 428 | + const char *zOp = 0; /* Type of change. */ | |
| 429 | + i64 sz = 0; /* Size of the file */ | |
| 430 | + int nc = 0; /* Number of conflicts */ | |
| 431 | + const char *zErrMsg = 0; /* Error message */ | |
| 428 | 432 | |
| 429 | 433 | zFullPath = mprintf("%s%s", g.zLocalRoot, zName); |
| 430 | 434 | zFullNewPath = mprintf("%s%s", g.zLocalRoot, zNewName); |
| 435 | + sz = file_size(zFullNewPath, ExtFILE); | |
| 431 | 436 | nameChng = fossil_strcmp(zName, zNewName); |
| 432 | 437 | nUpdate++; |
| 433 | 438 | if( deleted ){ |
| 434 | 439 | db_multi_exec("UPDATE vfile SET deleted=1 WHERE id=%d", idt); |
| 435 | 440 | } |
| @@ -437,10 +442,13 @@ | ||
| 437 | 442 | /* Conflict. This file has been added to the current check-out |
| 438 | 443 | ** but also exists in the target check-out. Use the current version. |
| 439 | 444 | */ |
| 440 | 445 | fossil_print("CONFLICT %s\n", zName); |
| 441 | 446 | nConflict++; |
| 447 | + zOp = "CONFLICT"; | |
| 448 | + nc = 1; | |
| 449 | + zErrMsg = "duplicate file"; | |
| 442 | 450 | }else if( idt>0 && idv==0 ){ |
| 443 | 451 | /* File added in the target. */ |
| 444 | 452 | if( file_isfile_or_link(zFullPath) ){ |
| 445 | 453 | /* Name of backup file with Original content */ |
| 446 | 454 | char *zOrig = file_newname(zFullPath, "original", 1); |
| @@ -449,10 +457,13 @@ | ||
| 449 | 457 | fossil_free(zOrig); |
| 450 | 458 | fossil_print("ADD %s - overwrites an unmanaged file", zName); |
| 451 | 459 | if( !dryRunFlag ) fossil_print(", original copy backed up locally"); |
| 452 | 460 | fossil_print("\n"); |
| 453 | 461 | nOverwrite++; |
| 462 | + nc = 1; | |
| 463 | + zOp = "CONFLICT"; | |
| 464 | + zErrMsg = "new file overwrites unmanaged file"; | |
| 454 | 465 | }else{ |
| 455 | 466 | fossil_print("ADD %s\n", zName); |
| 456 | 467 | } |
| 457 | 468 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 458 | 469 | if( !dryRunFlag ) vfile_to_disk(0, idt, 0, 0); |
| @@ -463,16 +474,18 @@ | ||
| 463 | 474 | }else{ |
| 464 | 475 | fossil_print("UPDATE %s\n", zName); |
| 465 | 476 | } |
| 466 | 477 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 467 | 478 | if( !dryRunFlag ) vfile_to_disk(0, idt, 0, 0); |
| 479 | + zOp = "UPDATE"; | |
| 468 | 480 | }else if( idt>0 && idv>0 && !deleted && file_size(zFullPath, RepoFILE)<0 ){ |
| 469 | 481 | /* The file missing from the local check-out. Restore it to the |
| 470 | 482 | ** version that appears in the target. */ |
| 471 | 483 | fossil_print("UPDATE %s\n", zName); |
| 472 | 484 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 473 | 485 | if( !dryRunFlag ) vfile_to_disk(0, idt, 0, 0); |
| 486 | + zOp = "UPDATE"; | |
| 474 | 487 | }else if( idt==0 && idv>0 ){ |
| 475 | 488 | if( ridv==0 ){ |
| 476 | 489 | /* Added in current check-out. Continue to hold the file as |
| 477 | 490 | ** as an addition */ |
| 478 | 491 | db_multi_exec("UPDATE vfile SET vid=%d WHERE id=%d", tid, idv); |
| @@ -479,10 +492,13 @@ | ||
| 479 | 492 | }else if( chnged ){ |
| 480 | 493 | /* Edited locally but deleted from the target. Do not track the |
| 481 | 494 | ** file but keep the edited version around. */ |
| 482 | 495 | fossil_print("CONFLICT %s - edited locally but deleted by update\n", |
| 483 | 496 | zName); |
| 497 | + zOp = "CONFLICT"; | |
| 498 | + zErrMsg = "edited locally but deleted by update"; | |
| 499 | + nc = 1; | |
| 484 | 500 | nConflict++; |
| 485 | 501 | }else{ |
| 486 | 502 | fossil_print("REMOVE %s\n", zName); |
| 487 | 503 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 488 | 504 | if( !dryRunFlag ){ |
| @@ -501,14 +517,10 @@ | ||
| 501 | 517 | } |
| 502 | 518 | }else if( idt>0 && idv>0 && ridt!=ridv && chnged ){ |
| 503 | 519 | /* Merge the changes in the current tree into the target version */ |
| 504 | 520 | Blob r, t, v; |
| 505 | 521 | int rc; |
| 506 | - const char *zOp = "MERGE"; | |
| 507 | - i64 sz = 0; | |
| 508 | - int nc = 0; | |
| 509 | - const char *zErrMsg = 0; | |
| 510 | 522 | |
| 511 | 523 | if( nameChng ){ |
| 512 | 524 | fossil_print("MERGE %s -> %s\n", zName, zNewName); |
| 513 | 525 | }else{ |
| 514 | 526 | fossil_print("MERGE %s\n", zName); |
| @@ -521,11 +533,10 @@ | ||
| 521 | 533 | unsigned mergeFlags = dryRunFlag ? MERGE_DRYRUN : 0; |
| 522 | 534 | if(keepMergeFlag!=0) mergeFlags |= MERGE_KEEP_FILES; |
| 523 | 535 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 524 | 536 | content_get(ridt, &t); |
| 525 | 537 | content_get(ridv, &v); |
| 526 | - sz = file_size(zFullPath, ExtFILE); | |
| 527 | 538 | rc = merge_3way(&v, zFullPath, &t, &r, mergeFlags); |
| 528 | 539 | if( rc>=0 ){ |
| 529 | 540 | if( !dryRunFlag ){ |
| 530 | 541 | blob_write_to_file(&r, zFullNewPath); |
| 531 | 542 | file_setexe(zFullNewPath, isexe); |
| @@ -534,10 +545,12 @@ | ||
| 534 | 545 | nc = rc; |
| 535 | 546 | zOp = "CONFLICT"; |
| 536 | 547 | zErrMsg = "merge conflicts"; |
| 537 | 548 | fossil_print("***** %d merge conflicts in %s\n", rc, zNewName); |
| 538 | 549 | nConflict++; |
| 550 | + }else{ | |
| 551 | + zOp = "MERGE"; | |
| 539 | 552 | } |
| 540 | 553 | }else{ |
| 541 | 554 | if( !dryRunFlag ){ |
| 542 | 555 | if( !keepMergeFlag ){ |
| 543 | 556 | /* Name of backup file with Original content */ |
| @@ -559,24 +572,10 @@ | ||
| 559 | 572 | zOp = "ERROR"; |
| 560 | 573 | zErrMsg = "cannot merge binary file"; |
| 561 | 574 | nc = 1; |
| 562 | 575 | } |
| 563 | 576 | } |
| 564 | - db_multi_exec( | |
| 565 | - "INSERT INTO mergestat(op,fnp,ridp,fn,ridv,sz,fnm,ridm,fnr,nc,msg)" | |
| 566 | - "VALUES(%Q,%Q,%d,%Q,NULL,%lld,%Q,%d,%Q,%d,%Q)", | |
| 567 | - /* op */ zOp, | |
| 568 | - /* fnp */ zName, | |
| 569 | - /* ridp */ ridv, | |
| 570 | - /* fn */ zNewName, | |
| 571 | - /* sz */ sz, | |
| 572 | - /* fnm */ zName, | |
| 573 | - /* ridm */ ridt, | |
| 574 | - /* fnr */ zNewName, | |
| 575 | - /* nc */ nc, | |
| 576 | - /* msg */ zErrMsg | |
| 577 | - ); | |
| 578 | 577 | if( nameChng && !dryRunFlag ) file_delete(zFullPath); |
| 579 | 578 | blob_reset(&v); |
| 580 | 579 | blob_reset(&t); |
| 581 | 580 | blob_reset(&r); |
| 582 | 581 | }else{ |
| @@ -588,10 +587,26 @@ | ||
| 588 | 587 | db_bind_int(&mtimeXfer, ":idt", idt); |
| 589 | 588 | db_step(&mtimeXfer); |
| 590 | 589 | db_reset(&mtimeXfer); |
| 591 | 590 | if( verboseFlag ) fossil_print("UNCHANGED %s\n", zName); |
| 592 | 591 | } |
| 592 | + } | |
| 593 | + if( zOp!=0 ){ | |
| 594 | + db_multi_exec( | |
| 595 | + "INSERT INTO mergestat(op,fnp,ridp,fn,ridv,sz,fnm,ridm,fnr,nc,msg)" | |
| 596 | + "VALUES(%Q,%Q,%d,%Q,NULL,%lld,%Q,%d,%Q,%d,%Q)", | |
| 597 | + /* op */ zOp, | |
| 598 | + /* fnp */ zName, | |
| 599 | + /* ridp */ ridv, | |
| 600 | + /* fn */ zNewName, | |
| 601 | + /* sz */ sz, | |
| 602 | + /* fnm */ zName, | |
| 603 | + /* ridm */ ridt, | |
| 604 | + /* fnr */ zNewName, | |
| 605 | + /* nc */ nc, | |
| 606 | + /* msg */ zErrMsg | |
| 607 | + ); | |
| 593 | 608 | } |
| 594 | 609 | free(zFullPath); |
| 595 | 610 | free(zFullNewPath); |
| 596 | 611 | } |
| 597 | 612 | db_finalize(&q); |
| 598 | 613 |
| --- src/update.c | |
| +++ src/update.c | |
| @@ -423,13 +423,18 @@ | |
| 423 | int islinkt = db_column_int(&q, 9); /* Is target file is a link */ |
| 424 | int deleted = db_column_int(&q, 10); /* Marked for deletion */ |
| 425 | char *zFullPath; /* Full pathname of the file */ |
| 426 | char *zFullNewPath; /* Full pathname of dest */ |
| 427 | char nameChng; /* True if the name changed */ |
| 428 | |
| 429 | zFullPath = mprintf("%s%s", g.zLocalRoot, zName); |
| 430 | zFullNewPath = mprintf("%s%s", g.zLocalRoot, zNewName); |
| 431 | nameChng = fossil_strcmp(zName, zNewName); |
| 432 | nUpdate++; |
| 433 | if( deleted ){ |
| 434 | db_multi_exec("UPDATE vfile SET deleted=1 WHERE id=%d", idt); |
| 435 | } |
| @@ -437,10 +442,13 @@ | |
| 437 | /* Conflict. This file has been added to the current check-out |
| 438 | ** but also exists in the target check-out. Use the current version. |
| 439 | */ |
| 440 | fossil_print("CONFLICT %s\n", zName); |
| 441 | nConflict++; |
| 442 | }else if( idt>0 && idv==0 ){ |
| 443 | /* File added in the target. */ |
| 444 | if( file_isfile_or_link(zFullPath) ){ |
| 445 | /* Name of backup file with Original content */ |
| 446 | char *zOrig = file_newname(zFullPath, "original", 1); |
| @@ -449,10 +457,13 @@ | |
| 449 | fossil_free(zOrig); |
| 450 | fossil_print("ADD %s - overwrites an unmanaged file", zName); |
| 451 | if( !dryRunFlag ) fossil_print(", original copy backed up locally"); |
| 452 | fossil_print("\n"); |
| 453 | nOverwrite++; |
| 454 | }else{ |
| 455 | fossil_print("ADD %s\n", zName); |
| 456 | } |
| 457 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 458 | if( !dryRunFlag ) vfile_to_disk(0, idt, 0, 0); |
| @@ -463,16 +474,18 @@ | |
| 463 | }else{ |
| 464 | fossil_print("UPDATE %s\n", zName); |
| 465 | } |
| 466 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 467 | if( !dryRunFlag ) vfile_to_disk(0, idt, 0, 0); |
| 468 | }else if( idt>0 && idv>0 && !deleted && file_size(zFullPath, RepoFILE)<0 ){ |
| 469 | /* The file missing from the local check-out. Restore it to the |
| 470 | ** version that appears in the target. */ |
| 471 | fossil_print("UPDATE %s\n", zName); |
| 472 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 473 | if( !dryRunFlag ) vfile_to_disk(0, idt, 0, 0); |
| 474 | }else if( idt==0 && idv>0 ){ |
| 475 | if( ridv==0 ){ |
| 476 | /* Added in current check-out. Continue to hold the file as |
| 477 | ** as an addition */ |
| 478 | db_multi_exec("UPDATE vfile SET vid=%d WHERE id=%d", tid, idv); |
| @@ -479,10 +492,13 @@ | |
| 479 | }else if( chnged ){ |
| 480 | /* Edited locally but deleted from the target. Do not track the |
| 481 | ** file but keep the edited version around. */ |
| 482 | fossil_print("CONFLICT %s - edited locally but deleted by update\n", |
| 483 | zName); |
| 484 | nConflict++; |
| 485 | }else{ |
| 486 | fossil_print("REMOVE %s\n", zName); |
| 487 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 488 | if( !dryRunFlag ){ |
| @@ -501,14 +517,10 @@ | |
| 501 | } |
| 502 | }else if( idt>0 && idv>0 && ridt!=ridv && chnged ){ |
| 503 | /* Merge the changes in the current tree into the target version */ |
| 504 | Blob r, t, v; |
| 505 | int rc; |
| 506 | const char *zOp = "MERGE"; |
| 507 | i64 sz = 0; |
| 508 | int nc = 0; |
| 509 | const char *zErrMsg = 0; |
| 510 | |
| 511 | if( nameChng ){ |
| 512 | fossil_print("MERGE %s -> %s\n", zName, zNewName); |
| 513 | }else{ |
| 514 | fossil_print("MERGE %s\n", zName); |
| @@ -521,11 +533,10 @@ | |
| 521 | unsigned mergeFlags = dryRunFlag ? MERGE_DRYRUN : 0; |
| 522 | if(keepMergeFlag!=0) mergeFlags |= MERGE_KEEP_FILES; |
| 523 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 524 | content_get(ridt, &t); |
| 525 | content_get(ridv, &v); |
| 526 | sz = file_size(zFullPath, ExtFILE); |
| 527 | rc = merge_3way(&v, zFullPath, &t, &r, mergeFlags); |
| 528 | if( rc>=0 ){ |
| 529 | if( !dryRunFlag ){ |
| 530 | blob_write_to_file(&r, zFullNewPath); |
| 531 | file_setexe(zFullNewPath, isexe); |
| @@ -534,10 +545,12 @@ | |
| 534 | nc = rc; |
| 535 | zOp = "CONFLICT"; |
| 536 | zErrMsg = "merge conflicts"; |
| 537 | fossil_print("***** %d merge conflicts in %s\n", rc, zNewName); |
| 538 | nConflict++; |
| 539 | } |
| 540 | }else{ |
| 541 | if( !dryRunFlag ){ |
| 542 | if( !keepMergeFlag ){ |
| 543 | /* Name of backup file with Original content */ |
| @@ -559,24 +572,10 @@ | |
| 559 | zOp = "ERROR"; |
| 560 | zErrMsg = "cannot merge binary file"; |
| 561 | nc = 1; |
| 562 | } |
| 563 | } |
| 564 | db_multi_exec( |
| 565 | "INSERT INTO mergestat(op,fnp,ridp,fn,ridv,sz,fnm,ridm,fnr,nc,msg)" |
| 566 | "VALUES(%Q,%Q,%d,%Q,NULL,%lld,%Q,%d,%Q,%d,%Q)", |
| 567 | /* op */ zOp, |
| 568 | /* fnp */ zName, |
| 569 | /* ridp */ ridv, |
| 570 | /* fn */ zNewName, |
| 571 | /* sz */ sz, |
| 572 | /* fnm */ zName, |
| 573 | /* ridm */ ridt, |
| 574 | /* fnr */ zNewName, |
| 575 | /* nc */ nc, |
| 576 | /* msg */ zErrMsg |
| 577 | ); |
| 578 | if( nameChng && !dryRunFlag ) file_delete(zFullPath); |
| 579 | blob_reset(&v); |
| 580 | blob_reset(&t); |
| 581 | blob_reset(&r); |
| 582 | }else{ |
| @@ -588,10 +587,26 @@ | |
| 588 | db_bind_int(&mtimeXfer, ":idt", idt); |
| 589 | db_step(&mtimeXfer); |
| 590 | db_reset(&mtimeXfer); |
| 591 | if( verboseFlag ) fossil_print("UNCHANGED %s\n", zName); |
| 592 | } |
| 593 | } |
| 594 | free(zFullPath); |
| 595 | free(zFullNewPath); |
| 596 | } |
| 597 | db_finalize(&q); |
| 598 |
| --- src/update.c | |
| +++ src/update.c | |
| @@ -423,13 +423,18 @@ | |
| 423 | int islinkt = db_column_int(&q, 9); /* Is target file is a link */ |
| 424 | int deleted = db_column_int(&q, 10); /* Marked for deletion */ |
| 425 | char *zFullPath; /* Full pathname of the file */ |
| 426 | char *zFullNewPath; /* Full pathname of dest */ |
| 427 | char nameChng; /* True if the name changed */ |
| 428 | const char *zOp = 0; /* Type of change. */ |
| 429 | i64 sz = 0; /* Size of the file */ |
| 430 | int nc = 0; /* Number of conflicts */ |
| 431 | const char *zErrMsg = 0; /* Error message */ |
| 432 | |
| 433 | zFullPath = mprintf("%s%s", g.zLocalRoot, zName); |
| 434 | zFullNewPath = mprintf("%s%s", g.zLocalRoot, zNewName); |
| 435 | sz = file_size(zFullNewPath, ExtFILE); |
| 436 | nameChng = fossil_strcmp(zName, zNewName); |
| 437 | nUpdate++; |
| 438 | if( deleted ){ |
| 439 | db_multi_exec("UPDATE vfile SET deleted=1 WHERE id=%d", idt); |
| 440 | } |
| @@ -437,10 +442,13 @@ | |
| 442 | /* Conflict. This file has been added to the current check-out |
| 443 | ** but also exists in the target check-out. Use the current version. |
| 444 | */ |
| 445 | fossil_print("CONFLICT %s\n", zName); |
| 446 | nConflict++; |
| 447 | zOp = "CONFLICT"; |
| 448 | nc = 1; |
| 449 | zErrMsg = "duplicate file"; |
| 450 | }else if( idt>0 && idv==0 ){ |
| 451 | /* File added in the target. */ |
| 452 | if( file_isfile_or_link(zFullPath) ){ |
| 453 | /* Name of backup file with Original content */ |
| 454 | char *zOrig = file_newname(zFullPath, "original", 1); |
| @@ -449,10 +457,13 @@ | |
| 457 | fossil_free(zOrig); |
| 458 | fossil_print("ADD %s - overwrites an unmanaged file", zName); |
| 459 | if( !dryRunFlag ) fossil_print(", original copy backed up locally"); |
| 460 | fossil_print("\n"); |
| 461 | nOverwrite++; |
| 462 | nc = 1; |
| 463 | zOp = "CONFLICT"; |
| 464 | zErrMsg = "new file overwrites unmanaged file"; |
| 465 | }else{ |
| 466 | fossil_print("ADD %s\n", zName); |
| 467 | } |
| 468 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 469 | if( !dryRunFlag ) vfile_to_disk(0, idt, 0, 0); |
| @@ -463,16 +474,18 @@ | |
| 474 | }else{ |
| 475 | fossil_print("UPDATE %s\n", zName); |
| 476 | } |
| 477 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 478 | if( !dryRunFlag ) vfile_to_disk(0, idt, 0, 0); |
| 479 | zOp = "UPDATE"; |
| 480 | }else if( idt>0 && idv>0 && !deleted && file_size(zFullPath, RepoFILE)<0 ){ |
| 481 | /* The file missing from the local check-out. Restore it to the |
| 482 | ** version that appears in the target. */ |
| 483 | fossil_print("UPDATE %s\n", zName); |
| 484 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 485 | if( !dryRunFlag ) vfile_to_disk(0, idt, 0, 0); |
| 486 | zOp = "UPDATE"; |
| 487 | }else if( idt==0 && idv>0 ){ |
| 488 | if( ridv==0 ){ |
| 489 | /* Added in current check-out. Continue to hold the file as |
| 490 | ** as an addition */ |
| 491 | db_multi_exec("UPDATE vfile SET vid=%d WHERE id=%d", tid, idv); |
| @@ -479,10 +492,13 @@ | |
| 492 | }else if( chnged ){ |
| 493 | /* Edited locally but deleted from the target. Do not track the |
| 494 | ** file but keep the edited version around. */ |
| 495 | fossil_print("CONFLICT %s - edited locally but deleted by update\n", |
| 496 | zName); |
| 497 | zOp = "CONFLICT"; |
| 498 | zErrMsg = "edited locally but deleted by update"; |
| 499 | nc = 1; |
| 500 | nConflict++; |
| 501 | }else{ |
| 502 | fossil_print("REMOVE %s\n", zName); |
| 503 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 504 | if( !dryRunFlag ){ |
| @@ -501,14 +517,10 @@ | |
| 517 | } |
| 518 | }else if( idt>0 && idv>0 && ridt!=ridv && chnged ){ |
| 519 | /* Merge the changes in the current tree into the target version */ |
| 520 | Blob r, t, v; |
| 521 | int rc; |
| 522 | |
| 523 | if( nameChng ){ |
| 524 | fossil_print("MERGE %s -> %s\n", zName, zNewName); |
| 525 | }else{ |
| 526 | fossil_print("MERGE %s\n", zName); |
| @@ -521,11 +533,10 @@ | |
| 533 | unsigned mergeFlags = dryRunFlag ? MERGE_DRYRUN : 0; |
| 534 | if(keepMergeFlag!=0) mergeFlags |= MERGE_KEEP_FILES; |
| 535 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 536 | content_get(ridt, &t); |
| 537 | content_get(ridv, &v); |
| 538 | rc = merge_3way(&v, zFullPath, &t, &r, mergeFlags); |
| 539 | if( rc>=0 ){ |
| 540 | if( !dryRunFlag ){ |
| 541 | blob_write_to_file(&r, zFullNewPath); |
| 542 | file_setexe(zFullNewPath, isexe); |
| @@ -534,10 +545,12 @@ | |
| 545 | nc = rc; |
| 546 | zOp = "CONFLICT"; |
| 547 | zErrMsg = "merge conflicts"; |
| 548 | fossil_print("***** %d merge conflicts in %s\n", rc, zNewName); |
| 549 | nConflict++; |
| 550 | }else{ |
| 551 | zOp = "MERGE"; |
| 552 | } |
| 553 | }else{ |
| 554 | if( !dryRunFlag ){ |
| 555 | if( !keepMergeFlag ){ |
| 556 | /* Name of backup file with Original content */ |
| @@ -559,24 +572,10 @@ | |
| 572 | zOp = "ERROR"; |
| 573 | zErrMsg = "cannot merge binary file"; |
| 574 | nc = 1; |
| 575 | } |
| 576 | } |
| 577 | if( nameChng && !dryRunFlag ) file_delete(zFullPath); |
| 578 | blob_reset(&v); |
| 579 | blob_reset(&t); |
| 580 | blob_reset(&r); |
| 581 | }else{ |
| @@ -588,10 +587,26 @@ | |
| 587 | db_bind_int(&mtimeXfer, ":idt", idt); |
| 588 | db_step(&mtimeXfer); |
| 589 | db_reset(&mtimeXfer); |
| 590 | if( verboseFlag ) fossil_print("UNCHANGED %s\n", zName); |
| 591 | } |
| 592 | } |
| 593 | if( zOp!=0 ){ |
| 594 | db_multi_exec( |
| 595 | "INSERT INTO mergestat(op,fnp,ridp,fn,ridv,sz,fnm,ridm,fnr,nc,msg)" |
| 596 | "VALUES(%Q,%Q,%d,%Q,NULL,%lld,%Q,%d,%Q,%d,%Q)", |
| 597 | /* op */ zOp, |
| 598 | /* fnp */ zName, |
| 599 | /* ridp */ ridv, |
| 600 | /* fn */ zNewName, |
| 601 | /* sz */ sz, |
| 602 | /* fnm */ zName, |
| 603 | /* ridm */ ridt, |
| 604 | /* fnr */ zNewName, |
| 605 | /* nc */ nc, |
| 606 | /* msg */ zErrMsg |
| 607 | ); |
| 608 | } |
| 609 | free(zFullPath); |
| 610 | free(zFullNewPath); |
| 611 | } |
| 612 | db_finalize(&q); |
| 613 |