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.
Commit
e99e58c5680716427d1da7144d81a5014df530139daaa9c4ce8b9ad35b46b0b9
Parent
1356151980805a8…
2 files changed
+8
-1
+8
-1
+8
-1
| --- src/merge.c | ||
| +++ src/merge.c | ||
| @@ -1014,11 +1014,18 @@ | ||
| 1014 | 1014 | ); |
| 1015 | 1015 | zName = db_column_text(&q, 1); |
| 1016 | 1016 | zFullName = mprintf("%s%s", g.zLocalRoot, zName); |
| 1017 | 1017 | if( file_isfile_or_link(zFullName) |
| 1018 | 1018 | && !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"); | |
| 1020 | 1027 | nOverwrite++; |
| 1021 | 1028 | }else{ |
| 1022 | 1029 | fossil_print("ADDED %s\n", zName); |
| 1023 | 1030 | } |
| 1024 | 1031 | fossil_free(zFullName); |
| 1025 | 1032 |
| --- 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 @@ | ||
| 435 | 435 | fossil_print("CONFLICT %s\n", zName); |
| 436 | 436 | nConflict++; |
| 437 | 437 | }else if( idt>0 && idv==0 ){ |
| 438 | 438 | /* File added in the target. */ |
| 439 | 439 | 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"); | |
| 441 | 448 | nOverwrite++; |
| 442 | 449 | }else{ |
| 443 | 450 | fossil_print("ADD %s\n", zName); |
| 444 | 451 | } |
| 445 | 452 | if( !dryRunFlag && !internalUpdate ) undo_save(zName); |
| 446 | 453 |
| --- 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 |