Fossil SCM

Backup any unmamaged files that are about to be overwritten by an update or merge. Potentially avoid the loss of a local file if the overwrite warning goes unnoticed, in which case undo is useless.

mgagnon 2022-09-21 17:14 trunk
Commit e99e58c5680716427d1da7144d81a5014df530139daaa9c4ce8b9ad35b46b0b9
2 files changed +8 -1 +8 -1
+8 -1
--- src/merge.c
+++ src/merge.c
@@ -1014,11 +1014,18 @@
10141014
);
10151015
zName = db_column_text(&q, 1);
10161016
zFullName = mprintf("%s%s", g.zLocalRoot, zName);
10171017
if( file_isfile_or_link(zFullName)
10181018
&& !db_exists("SELECT 1 FROM fv WHERE fn=%Q", zName) ){
1019
- fossil_print("ADDED %s (overwrites an unmanaged file)\n", zName);
1019
+ /* Name of backup file with Original content */
1020
+ char *zOrig = file_newname(zFullName, "original", 1);
1021
+ /* Backup previously unanaged file before to be overwritten */
1022
+ file_copy(zFullName, zOrig);
1023
+ fossil_free(zOrig);
1024
+ fossil_print("ADDED %s (overwrites an unmanaged file)", zName);
1025
+ if( !dryRunFlag ) fossil_print(", original copy backed up locally");
1026
+ fossil_print("\n");
10201027
nOverwrite++;
10211028
}else{
10221029
fossil_print("ADDED %s\n", zName);
10231030
}
10241031
fossil_free(zFullName);
10251032
--- src/merge.c
+++ src/merge.c
@@ -1014,11 +1014,18 @@
1014 );
1015 zName = db_column_text(&q, 1);
1016 zFullName = mprintf("%s%s", g.zLocalRoot, zName);
1017 if( file_isfile_or_link(zFullName)
1018 && !db_exists("SELECT 1 FROM fv WHERE fn=%Q", zName) ){
1019 fossil_print("ADDED %s (overwrites an unmanaged file)\n", zName);
 
 
 
 
 
 
 
1020 nOverwrite++;
1021 }else{
1022 fossil_print("ADDED %s\n", zName);
1023 }
1024 fossil_free(zFullName);
1025
--- src/merge.c
+++ src/merge.c
@@ -1014,11 +1014,18 @@
1014 );
1015 zName = db_column_text(&q, 1);
1016 zFullName = mprintf("%s%s", g.zLocalRoot, zName);
1017 if( file_isfile_or_link(zFullName)
1018 && !db_exists("SELECT 1 FROM fv WHERE fn=%Q", zName) ){
1019 /* Name of backup file with Original content */
1020 char *zOrig = file_newname(zFullName, "original", 1);
1021 /* Backup previously unanaged file before to be overwritten */
1022 file_copy(zFullName, zOrig);
1023 fossil_free(zOrig);
1024 fossil_print("ADDED %s (overwrites an unmanaged file)", zName);
1025 if( !dryRunFlag ) fossil_print(", original copy backed up locally");
1026 fossil_print("\n");
1027 nOverwrite++;
1028 }else{
1029 fossil_print("ADDED %s\n", zName);
1030 }
1031 fossil_free(zFullName);
1032
+8 -1
--- src/update.c
+++ src/update.c
@@ -435,11 +435,18 @@
435435
fossil_print("CONFLICT %s\n", zName);
436436
nConflict++;
437437
}else if( idt>0 && idv==0 ){
438438
/* File added in the target. */
439439
if( file_isfile_or_link(zFullPath) ){
440
- fossil_print("ADD %s - overwrites an unmanaged file\n", zName);
440
+ /* Name of backup file with Original content */
441
+ char *zOrig = file_newname(zFullPath, "original", 1);
442
+ /* Backup previously unanaged file before to be overwritten */
443
+ file_copy(zFullPath, zOrig);
444
+ fossil_free(zOrig);
445
+ fossil_print("ADD %s - overwrites an unmanaged file", zName);
446
+ if( !dryRunFlag ) fossil_print(", original copy backed up locally");
447
+ fossil_print("\n");
441448
nOverwrite++;
442449
}else{
443450
fossil_print("ADD %s\n", zName);
444451
}
445452
if( !dryRunFlag && !internalUpdate ) undo_save(zName);
446453
--- src/update.c
+++ src/update.c
@@ -435,11 +435,18 @@
435 fossil_print("CONFLICT %s\n", zName);
436 nConflict++;
437 }else if( idt>0 && idv==0 ){
438 /* File added in the target. */
439 if( file_isfile_or_link(zFullPath) ){
440 fossil_print("ADD %s - overwrites an unmanaged file\n", zName);
 
 
 
 
 
 
 
441 nOverwrite++;
442 }else{
443 fossil_print("ADD %s\n", zName);
444 }
445 if( !dryRunFlag && !internalUpdate ) undo_save(zName);
446
--- src/update.c
+++ src/update.c
@@ -435,11 +435,18 @@
435 fossil_print("CONFLICT %s\n", zName);
436 nConflict++;
437 }else if( idt>0 && idv==0 ){
438 /* File added in the target. */
439 if( file_isfile_or_link(zFullPath) ){
440 /* Name of backup file with Original content */
441 char *zOrig = file_newname(zFullPath, "original", 1);
442 /* Backup previously unanaged file before to be overwritten */
443 file_copy(zFullPath, zOrig);
444 fossil_free(zOrig);
445 fossil_print("ADD %s - overwrites an unmanaged file", zName);
446 if( !dryRunFlag ) fossil_print(", original copy backed up locally");
447 fossil_print("\n");
448 nOverwrite++;
449 }else{
450 fossil_print("ADD %s\n", zName);
451 }
452 if( !dryRunFlag && !internalUpdate ) undo_save(zName);
453

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button