@@ -687,10 +687,11 @@
687 687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** -K|--keep-merge-files On merge conflict, retain the temporary files
688 688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** used for merging, named *-baseline, *-original,
689 689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and *-merge.
690 690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** -n|--dry-run Do not actually change files on disk
691 691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --nosync Do not auto-sync prior to merging
692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --noundo Do not changes in the undo log
692 693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** -v|--verbose Show additional details of the merge
693 694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
694 695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void merge_cmd(void){
695 696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int vid; /* Current version "V" */
696 697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mid; /* Version we are merging from "M" */
@@ -712,10 +713,11 @@
712 713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nOverwrite = 0; /* Number of unmanaged files overwritten */
713 714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char vAncestor = 'p'; /* If P is an ancestor of V then 'p', else 'n' */
714 715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zVersion; /* The VERSION argument */
715 716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bMultiMerge = 0; /* True if there are two or more VERSION arguments */
716 717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nMerge = 0; /* Number of prior merges processed */
718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int useUndo = 1; /* True to record changes in the undo log */
717 719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q; /* SQL statment used for merge processing */
718 720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
719 721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
720 722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Notation:
721 723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -760,10 +762,12 @@
760 762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** * The --dry-run option is also useful in combination with --debug.
761 763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
762 764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
debugFlag = find_option("debug",0,0)!=0;
763 765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( debugFlag && verboseFlag ) debugFlag = 2;
764 766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
showVfileFlag = find_option("show-vfile",0,0)!=0;
767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ useUndo = find_option("noundo",0,0)==0;
768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( dryRunFlag ) useUndo = 0;
765 769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
766 770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
verify_all_options();
767 771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_must_be_within_tree();
768 772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zBinGlob==0 ) zBinGlob = db_get("binary-glob",0);
769 773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
vid = db_lget_int("checkout", 0);
@@ -926,11 +930,11 @@
926 930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
integrateFlag ? "integrate:" : "merge-from:");
927 931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
print_checkin_description(pid, 12, "baseline:");
928 932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
929 933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
vfile_check_signature(vid, CKSIG_ENOTFILE);
930 934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nMerge==0 ) db_begin_transaction();
931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !dryRunFlag ) undo_begin();
935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( useUndo ) undo_begin();
932 936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( load_vfile_from_rid(mid) && !forceMissingFlag ){
933 937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_fatal("missing content, unable to merge");
934 938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
935 939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( load_vfile_from_rid(pid) && !forceMissingFlag ){
936 940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_fatal("missing content, unable to merge");
@@ -1183,12 +1187,12 @@
1183 1187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ridm = db_column_int(&q, 1);
1184 1188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName = db_column_text(&q, 2);
1185 1189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int islinkm = db_column_int(&q, 3);
1186 1190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Copy content from idm over into idv. Overwrite idv. */
1187 1191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_print("UPDATE %s\n", zName);
1192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( useUndo ) undo_save(zName);
1188 1193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !dryRunFlag ){
1189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- undo_save(zName);
1190 1194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(
1191 1195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"UPDATE vfile SET mtime=0, mrid=%d, chnged=%d, islink=%d,"
1192 1196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" mhash=CASE WHEN rid<>%d"
1193 1197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" THEN (SELECT uuid FROM blob WHERE blob.rid=%d) END"
1194 1198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE id=%d", ridm, integrateFlag?4:2, islinkm, ridm, ridm, idv
@@ -1265,11 +1269,11 @@
1265 1269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1266 1270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 sz;
1267 1271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zErrMsg = 0;
1268 1272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nc = 0;
1269 1273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !dryRunFlag ) undo_save(zName);
1274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( useUndo ) undo_save(zName);
1271 1275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFullPath = mprintf("%s/%s", g.zLocalRoot, zName);
1272 1276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sz = file_size(zFullPath, ExtFILE);
1273 1277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content_get(ridp, &p);
1274 1278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content_get(ridm, &m);
1275 1279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( isBinary ){
@@ -1352,11 +1356,11 @@
1352 1356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zErrMsg = "local edits lost";
1353 1357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zFullPath = mprintf("%s/%s", g.zLocalRoot, zName);
1354 1358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sz = file_size(zFullPath, ExtFILE);
1355 1359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free(zFullPath);
1356 1360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !dryRunFlag ) undo_save(zName);
1361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( useUndo ) undo_save(zName);
1358 1362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(
1359 1363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"UPDATE vfile SET deleted=1 WHERE id=%d", idv
1360 1364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
1361 1365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !dryRunFlag ){
1362 1366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zFullPath = mprintf("%s%s", g.zLocalRoot, zName);
@@ -1399,12 +1403,12 @@
1399 1403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int idv = db_column_int(&q, 0);
1400 1404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zOldName = db_column_text(&q, 1);
1401 1405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zNewName = db_column_text(&q, 2);
1402 1406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int isExe = db_column_int(&q, 3);
1403 1407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_print("RENAME %s -> %s\n", zOldName, zNewName);
1404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !dryRunFlag ) undo_save(zOldName);
1405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !dryRunFlag ) undo_save(zNewName);
1408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( useUndo ) undo_save(zOldName);
1409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( useUndo ) undo_save(zNewName);
1406 1410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(
1407 1411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"UPDATE mergestat SET fnr=fnm WHERE fnp=%Q",
1408 1412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zOldName
1409 1413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
1410 1414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(
@@ -1498,12 +1502,12 @@
1498 1502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"VALUES('ADDED',%Q,%d,%Q)",
1499 1503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* fnm */ zName,
1500 1504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ridm */ db_column_int(&q,2),
1501 1505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* fnr */ zName
1502 1506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
1507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( useUndo ) undo_save(zName);
1503 1508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !dryRunFlag ){
1504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- undo_save(zName);
1505 1509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
vfile_to_disk(0, idm, 0, 0);
1506 1510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1507 1511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1508 1512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
1509 1513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -1558,9 +1562,9 @@
1558 1562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1559 1563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( bMultiMerge && nConflict==0 ){
1560 1564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nMerge++;
1561 1565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
goto merge_next_child;
1562 1566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !dryRunFlag ) undo_finish();
1567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( useUndo ) undo_finish();
1564 1568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1565 1569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_end_transaction(dryRunFlag);
1566 1570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1567 1571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!