Fossil SCM

Add the ability (configurable) for "fossil rm" and "fossil mv" to actually remove and rename files on disk.

drh 2015-04-10 00:23 trunk merge
Commit 3c941ddc3674cd0f71a38b6b0d374a0c995233c7
+7
--- auto.def
+++ auto.def
@@ -5,10 +5,11 @@
55
options {
66
with-openssl:path|auto|none
77
=> {Look for OpenSSL in the given path, or auto or none}
88
with-miniz=0 => {Use miniz from the source tree}
99
with-zlib:path => {Look for zlib in the given path}
10
+ with-legacy-mv-rm=0 => {Enable legacy behavior for mv/rm (skip checkout files)}
1011
with-th1-docs=0 => {Enable TH1 for embedded documentation pages}
1112
with-th1-hooks=0 => {Enable TH1 hooks for commands and web pages}
1213
with-tcl:path => {Enable Tcl integration, with Tcl in the specified path}
1314
with-tcl-stubs=0 => {Enable Tcl integration via stubs library mechanism}
1415
with-tcl-private-stubs=0
@@ -85,10 +86,16 @@
8586
# reading config.h first.
8687
define-append EXTRA_CFLAGS -DFOSSIL_ENABLE_JSON
8788
define FOSSIL_ENABLE_JSON
8889
msg-result "JSON support enabled"
8990
}
91
+
92
+if {[opt-bool with-legacy-mv-rm]} {
93
+ define-append EXTRA_CFLAGS -DFOSSIL_ENABLE_LEGACY_MV_RM
94
+ define FOSSIL_ENABLE_LEGACY_MV_RM
95
+ msg-result "Legacy mv/rm support enabled"
96
+}
9097
9198
if {[opt-bool with-th1-docs]} {
9299
define-append EXTRA_CFLAGS -DFOSSIL_ENABLE_TH1_DOCS
93100
define FOSSIL_ENABLE_TH1_DOCS
94101
msg-result "TH1 embedded documentation support enabled"
95102
--- auto.def
+++ auto.def
@@ -5,10 +5,11 @@
5 options {
6 with-openssl:path|auto|none
7 => {Look for OpenSSL in the given path, or auto or none}
8 with-miniz=0 => {Use miniz from the source tree}
9 with-zlib:path => {Look for zlib in the given path}
 
10 with-th1-docs=0 => {Enable TH1 for embedded documentation pages}
11 with-th1-hooks=0 => {Enable TH1 hooks for commands and web pages}
12 with-tcl:path => {Enable Tcl integration, with Tcl in the specified path}
13 with-tcl-stubs=0 => {Enable Tcl integration via stubs library mechanism}
14 with-tcl-private-stubs=0
@@ -85,10 +86,16 @@
85 # reading config.h first.
86 define-append EXTRA_CFLAGS -DFOSSIL_ENABLE_JSON
87 define FOSSIL_ENABLE_JSON
88 msg-result "JSON support enabled"
89 }
 
 
 
 
 
 
90
91 if {[opt-bool with-th1-docs]} {
92 define-append EXTRA_CFLAGS -DFOSSIL_ENABLE_TH1_DOCS
93 define FOSSIL_ENABLE_TH1_DOCS
94 msg-result "TH1 embedded documentation support enabled"
95
--- auto.def
+++ auto.def
@@ -5,10 +5,11 @@
5 options {
6 with-openssl:path|auto|none
7 => {Look for OpenSSL in the given path, or auto or none}
8 with-miniz=0 => {Use miniz from the source tree}
9 with-zlib:path => {Look for zlib in the given path}
10 with-legacy-mv-rm=0 => {Enable legacy behavior for mv/rm (skip checkout files)}
11 with-th1-docs=0 => {Enable TH1 for embedded documentation pages}
12 with-th1-hooks=0 => {Enable TH1 hooks for commands and web pages}
13 with-tcl:path => {Enable Tcl integration, with Tcl in the specified path}
14 with-tcl-stubs=0 => {Enable Tcl integration via stubs library mechanism}
15 with-tcl-private-stubs=0
@@ -85,10 +86,16 @@
86 # reading config.h first.
87 define-append EXTRA_CFLAGS -DFOSSIL_ENABLE_JSON
88 define FOSSIL_ENABLE_JSON
89 msg-result "JSON support enabled"
90 }
91
92 if {[opt-bool with-legacy-mv-rm]} {
93 define-append EXTRA_CFLAGS -DFOSSIL_ENABLE_LEGACY_MV_RM
94 define FOSSIL_ENABLE_LEGACY_MV_RM
95 msg-result "Legacy mv/rm support enabled"
96 }
97
98 if {[opt-bool with-th1-docs]} {
99 define-append EXTRA_CFLAGS -DFOSSIL_ENABLE_TH1_DOCS
100 define FOSSIL_ENABLE_TH1_DOCS
101 msg-result "TH1 embedded documentation support enabled"
102
+203 -16
--- src/add.c
+++ src/add.c
@@ -22,10 +22,28 @@
2222
#include "add.h"
2323
#include <assert.h>
2424
#include <dirent.h>
2525
#include "cygsup.h"
2626
27
+/*
28
+** WARNING: For Fossil version 1.x this value was always zero. For Fossil
29
+** 2.x, it will probably always be one. When this value is zero,
30
+** files in the checkout will not be moved by the "mv" command and
31
+** files in the checkout will not be removed by the "rm" command.
32
+**
33
+** If the FOSSIL_ENABLE_LEGACY_MV_RM compile-time option is used,
34
+** the "mv-rm-files" setting will be consulted instead of using
35
+** this value.
36
+**
37
+** To retain the Fossil version 1.x behavior when using Fossil 2.x,
38
+** the FOSSIL_ENABLE_LEGACY_MV_RM compile-time option must be used
39
+** -AND- the "mv-rm-files" setting must be set to zero.
40
+*/
41
+#ifndef FOSSIL_MV_RM_FILE
42
+#define FOSSIL_MV_RM_FILE (0)
43
+#endif
44
+
2745
/*
2846
** This routine returns the names of files in a working checkout that
2947
** are created by Fossil itself, and hence should not be added, deleted,
3048
** or merge, and should be omitted from "clean" and "extras" lists.
3149
**
@@ -331,10 +349,58 @@
331349
glob_free(pClean);
332350
333351
add_files_in_sfile(vid);
334352
db_end_transaction(0);
335353
}
354
+
355
+/*
356
+** This function adds a file to list of files to delete from disk after
357
+** the other actions required for the parent operation have completed
358
+** successfully. The first time it is called for the current process,
359
+** it creates a temporary table named "fremove", to keep track of these
360
+** files.
361
+*/
362
+static void add_file_to_remove(
363
+ const char *zOldName /* The old name of the file on disk. */
364
+){
365
+ static int tableCreated = 0;
366
+ Blob fullOldName;
367
+ if( !tableCreated ){
368
+ db_multi_exec("CREATE TEMP TABLE fremove(x TEXT PRIMARY KEY %s)",
369
+ filename_collation());
370
+ tableCreated = 1;
371
+ }
372
+ file_canonical_name(zOldName, &fullOldName, 0);
373
+ db_multi_exec("INSERT INTO fremove VALUES('%q');", blob_str(&fullOldName));
374
+ blob_reset(&fullOldName);
375
+}
376
+
377
+/*
378
+** This function deletes files from the checkout, using the file names
379
+** contained in the temporary table "fremove". The temporary table is
380
+** created on demand by the add_file_to_remove() function.
381
+**
382
+** If dryRunFlag is non-zero, no files will be removed; however, their
383
+** names will still be output.
384
+**
385
+** The temporary table "fremove" is dropped after being processed.
386
+*/
387
+static void process_files_to_remove(
388
+ int dryRunFlag /* Zero to actually operate on the file-system. */
389
+){
390
+ Stmt remove;
391
+ db_prepare(&remove, "SELECT x FROM fremove ORDER BY x;");
392
+ while( db_step(&remove)==SQLITE_ROW ){
393
+ const char *zOldName = db_column_text(&remove, 0);
394
+ if( !dryRunFlag ){
395
+ file_delete(zOldName);
396
+ }
397
+ fossil_print("DELETED_FILE %s\n", zOldName);
398
+ }
399
+ db_finalize(&remove);
400
+ db_multi_exec("DROP TABLE fremove;");
401
+}
336402
337403
/*
338404
** COMMAND: rm
339405
** COMMAND: delete
340406
** COMMAND: forget*
@@ -341,28 +407,55 @@
341407
**
342408
** Usage: %fossil rm|delete|forget FILE1 ?FILE2 ...?
343409
**
344410
** Remove one or more files or directories from the repository.
345411
**
346
-** This command does NOT remove the files from disk. It just marks the
347
-** files as no longer being part of the project. In other words, future
348
-** changes to the named files will not be versioned.
412
+** The 'rm' and 'delete' commands do NOT normally remove the files from
413
+** disk. They just mark the files as no longer being part of the project.
414
+** In other words, future changes to the named files will not be versioned.
415
+** However, the default behavior of this command may be overridden via the
416
+** command line options listed below and/or the 'mv-rm-files' setting.
417
+**
418
+** The 'forget' command never removes files from disk, even when the command
419
+** line options and/or the 'mv-rm-files' setting would otherwise require it
420
+** to do so.
421
+**
422
+** WARNING: If the "--hard" option is specified -OR- the "mv-rm-files"
423
+** setting is non-zero, files WILL BE removed from disk as well.
424
+** This does NOT apply to the 'forget' command.
349425
**
350426
** Options:
427
+** --soft Skip removing files from the checkout.
428
+** This supersedes the --hard option.
429
+** --hard Remove files from the checkout.
351430
** --case-sensitive <BOOL> Override the case-sensitive setting.
431
+** -n|--dry-run If given, display instead of run actions.
352432
**
353433
** See also: addremove, add
354434
*/
355435
void delete_cmd(void){
356436
int i;
437
+ int removeFiles;
438
+ int dryRunFlag;
357439
Stmt loop;
440
+
441
+ dryRunFlag = find_option("dry-run","n",0)!=0;
358442
359443
/* We should be done with options.. */
360444
verify_all_options();
361445
362446
db_must_be_within_tree();
363447
db_begin_transaction();
448
+ if( g.argv[1][0]=='f' ){ /* i.e. "forget" */
449
+ removeFiles = 0;
450
+ }else{
451
+#if FOSSIL_ENABLE_LEGACY_MV_RM
452
+ removeFiles = db_get_boolean("mv-rm-files",0);
453
+#else
454
+ removeFiles = FOSSIL_MV_RM_FILE;
455
+#endif
456
+ }
364457
db_multi_exec("CREATE TEMP TABLE sfile(x TEXT PRIMARY KEY %s)",
365458
filename_collation());
366459
for(i=2; i<g.argc; i++){
367460
Blob treeName;
368461
char *zTreeName;
@@ -382,17 +475,21 @@
382475
}
383476
384477
db_prepare(&loop, "SELECT x FROM sfile");
385478
while( db_step(&loop)==SQLITE_ROW ){
386479
fossil_print("DELETED %s\n", db_column_text(&loop, 0));
480
+ if( removeFiles ) add_file_to_remove(db_column_text(&loop, 0));
387481
}
388482
db_finalize(&loop);
389
- db_multi_exec(
390
- "UPDATE vfile SET deleted=1 WHERE pathname IN sfile;"
391
- "DELETE FROM vfile WHERE rid=0 AND deleted;"
392
- );
483
+ if( !dryRunFlag ){
484
+ db_multi_exec(
485
+ "UPDATE vfile SET deleted=1 WHERE pathname IN sfile;"
486
+ "DELETE FROM vfile WHERE rid=0 AND deleted;"
487
+ );
488
+ }
393489
db_end_transaction(0);
490
+ if( removeFiles ) process_files_to_remove(dryRunFlag);
394491
}
395492
396493
/*
397494
** Capture the command-line --case-sensitive option.
398495
*/
@@ -593,11 +690,12 @@
593690
** The original name of the file is zOrig. The new filename is zNew.
594691
*/
595692
static void mv_one_file(
596693
int vid,
597694
const char *zOrig,
598
- const char *zNew
695
+ const char *zNew,
696
+ int dryRunFlag
599697
){
600698
int x = db_int(-1, "SELECT deleted FROM vfile WHERE pathname=%Q %s",
601699
zNew, filename_collation());
602700
if( x>=0 ){
603701
if( x==0 ){
@@ -607,14 +705,75 @@
607705
fossil_fatal("cannot rename '%s' to '%s' since the delete of '%s' has "
608706
"not yet been committed", zOrig, zNew, zNew);
609707
}
610708
}
611709
fossil_print("RENAME %s %s\n", zOrig, zNew);
612
- db_multi_exec(
613
- "UPDATE vfile SET pathname='%q' WHERE pathname='%q' %s AND vid=%d",
614
- zNew, zOrig, filename_collation(), vid
615
- );
710
+ if( !dryRunFlag ){
711
+ db_multi_exec(
712
+ "UPDATE vfile SET pathname='%q' WHERE pathname='%q' %s AND vid=%d",
713
+ zNew, zOrig, filename_collation(), vid
714
+ );
715
+ }
716
+}
717
+
718
+/*
719
+** This function adds a file to list of files to move on disk after the
720
+** other actions required for the parent operation have completed
721
+** successfully. The first time it is called for the current process,
722
+** it creates a temporary table named "fmove", to keep track of these
723
+** files.
724
+*/
725
+static void add_file_to_move(
726
+ const char *zOldName, /* The old name of the file on disk. */
727
+ const char *zNewName /* The new name of the file on disk. */
728
+){
729
+ static int tableCreated = 0;
730
+ Blob fullOldName;
731
+ Blob fullNewName;
732
+ if( !tableCreated ){
733
+ db_multi_exec("CREATE TEMP TABLE fmove(x TEXT PRIMARY KEY %s, y TEXT %s)",
734
+ filename_collation(), filename_collation());
735
+ tableCreated = 1;
736
+ }
737
+ file_canonical_name(zOldName, &fullOldName, 0);
738
+ file_canonical_name(zNewName, &fullNewName, 0);
739
+ db_multi_exec("INSERT INTO fmove VALUES('%q','%q');",
740
+ blob_str(&fullOldName), blob_str(&fullNewName));
741
+ blob_reset(&fullNewName);
742
+ blob_reset(&fullOldName);
743
+}
744
+
745
+/*
746
+** This function moves files within the checkout, using the file names
747
+** contained in the temporary table "fmove". The temporary table is
748
+** created on demand by the add_file_to_move() function.
749
+**
750
+** If dryRunFlag is non-zero, no files will be moved; however, their
751
+** names will still be output.
752
+**
753
+** The temporary table "fmove" is dropped after being processed.
754
+*/
755
+static void process_files_to_move(
756
+ int dryRunFlag /* Zero to actually operate on the file-system. */
757
+){
758
+ Stmt move;
759
+ db_prepare(&move, "SELECT x, y FROM fmove ORDER BY x;");
760
+ while( db_step(&move)==SQLITE_ROW ){
761
+ const char *zOldName = db_column_text(&move, 0);
762
+ const char *zNewName = db_column_text(&move, 1);
763
+ if( !dryRunFlag ){
764
+ if( file_wd_islink(zOldName) ){
765
+ symlink_copy(zOldName, zNewName);
766
+ }else{
767
+ file_copy(zOldName, zNewName);
768
+ }
769
+ file_delete(zOldName);
770
+ }
771
+ fossil_print("MOVED_FILE %s\n", zOldName);
772
+ }
773
+ db_finalize(&move);
774
+ db_multi_exec("DROP TABLE fmove;");
616775
}
617776
618777
/*
619778
** COMMAND: mv
620779
** COMMAND: rename*
@@ -623,27 +782,44 @@
623782
** or: %fossil mv|rename OLDNAME... DIR
624783
**
625784
** Move or rename one or more files or directories within the repository tree.
626785
** You can either rename a file or directory or move it to another subdirectory.
627786
**
628
-** This command does NOT rename or move the files on disk. This command merely
629
-** records the fact that filenames have changed so that appropriate notations
630
-** can be made at the next commit/check-in.
787
+** The 'mv' command does NOT normally rename or move the files on disk.
788
+** This command merely records the fact that file names have changed so
789
+** that appropriate notations can be made at the next commit/check-in.
790
+** However, the default behavior of this command may be overridden via
791
+** command line options listed below and/or the 'mv-rm-files' setting.
792
+**
793
+** The 'rename' command never renames or moves files on disk, even when the
794
+** command line options and/or the 'mv-rm-files' setting would otherwise
795
+** require it to do so.
796
+**
797
+** WARNING: If the "--hard" option is specified -OR- the "mv-rm-files"
798
+** setting is non-zero, files WILL BE renamed or moved on disk
799
+** as well. This does NOT apply to the 'rename' command.
631800
**
632801
** Options:
802
+** --soft Skip moving files within the checkout.
803
+** This supersedes the --hard option.
804
+** --hard Move files within the checkout.
633805
** --case-sensitive <BOOL> Override the case-sensitive setting.
806
+** -n|--dry-run If given, display instead of run actions.
634807
**
635808
** See also: changes, status
636809
*/
637810
void mv_cmd(void){
638811
int i;
639812
int vid;
813
+ int moveFiles;
814
+ int dryRunFlag;
640815
char *zDest;
641816
Blob dest;
642817
Stmt q;
643818
644819
db_must_be_within_tree();
820
+ dryRunFlag = find_option("dry-run","n",0)!=0;
645821
646822
/* We should be done with options.. */
647823
verify_all_options();
648824
649825
vid = db_lget_int("checkout", 0);
@@ -653,10 +829,19 @@
653829
if( g.argc<4 ){
654830
usage("OLDNAME NEWNAME");
655831
}
656832
zDest = g.argv[g.argc-1];
657833
db_begin_transaction();
834
+ if( g.argv[1][0]=='r' ){ /* i.e. "rename" */
835
+ moveFiles = 0;
836
+ }else{
837
+#if FOSSIL_ENABLE_LEGACY_MV_RM
838
+ moveFiles = db_get_boolean("mv-rm-files",0);
839
+#else
840
+ moveFiles = FOSSIL_MV_RM_FILE;
841
+#endif
842
+ }
658843
file_tree_name(zDest, &dest, 1);
659844
db_multi_exec(
660845
"UPDATE vfile SET origname=pathname WHERE origname IS NULL;"
661846
);
662847
db_multi_exec(
@@ -711,18 +896,20 @@
711896
}
712897
db_prepare(&q, "SELECT f, t FROM mv ORDER BY f");
713898
while( db_step(&q)==SQLITE_ROW ){
714899
const char *zFrom = db_column_text(&q, 0);
715900
const char *zTo = db_column_text(&q, 1);
716
- mv_one_file(vid, zFrom, zTo);
901
+ mv_one_file(vid, zFrom, zTo, dryRunFlag);
902
+ if( moveFiles ) add_file_to_move(zFrom, zTo);
717903
}
718904
db_finalize(&q);
719905
db_end_transaction(0);
906
+ if( moveFiles ) process_files_to_move(dryRunFlag);
720907
}
721908
722909
/*
723910
** Function for stash_apply to be able to restore a file and indicate
724911
** newly ADDED state.
725912
*/
726913
int stash_add_files_in_sfile(int vid){
727914
return add_files_in_sfile(vid);
728915
}
729916
--- src/add.c
+++ src/add.c
@@ -22,10 +22,28 @@
22 #include "add.h"
23 #include <assert.h>
24 #include <dirent.h>
25 #include "cygsup.h"
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27 /*
28 ** This routine returns the names of files in a working checkout that
29 ** are created by Fossil itself, and hence should not be added, deleted,
30 ** or merge, and should be omitted from "clean" and "extras" lists.
31 **
@@ -331,10 +349,58 @@
331 glob_free(pClean);
332
333 add_files_in_sfile(vid);
334 db_end_transaction(0);
335 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
336
337 /*
338 ** COMMAND: rm
339 ** COMMAND: delete
340 ** COMMAND: forget*
@@ -341,28 +407,55 @@
341 **
342 ** Usage: %fossil rm|delete|forget FILE1 ?FILE2 ...?
343 **
344 ** Remove one or more files or directories from the repository.
345 **
346 ** This command does NOT remove the files from disk. It just marks the
347 ** files as no longer being part of the project. In other words, future
348 ** changes to the named files will not be versioned.
 
 
 
 
 
 
 
 
 
 
349 **
350 ** Options:
 
 
 
351 ** --case-sensitive <BOOL> Override the case-sensitive setting.
 
352 **
353 ** See also: addremove, add
354 */
355 void delete_cmd(void){
356 int i;
 
 
357 Stmt loop;
 
 
358
359 /* We should be done with options.. */
360 verify_all_options();
361
362 db_must_be_within_tree();
363 db_begin_transaction();
 
 
 
 
 
 
 
 
 
364 db_multi_exec("CREATE TEMP TABLE sfile(x TEXT PRIMARY KEY %s)",
365 filename_collation());
366 for(i=2; i<g.argc; i++){
367 Blob treeName;
368 char *zTreeName;
@@ -382,17 +475,21 @@
382 }
383
384 db_prepare(&loop, "SELECT x FROM sfile");
385 while( db_step(&loop)==SQLITE_ROW ){
386 fossil_print("DELETED %s\n", db_column_text(&loop, 0));
 
387 }
388 db_finalize(&loop);
389 db_multi_exec(
390 "UPDATE vfile SET deleted=1 WHERE pathname IN sfile;"
391 "DELETE FROM vfile WHERE rid=0 AND deleted;"
392 );
 
 
393 db_end_transaction(0);
 
394 }
395
396 /*
397 ** Capture the command-line --case-sensitive option.
398 */
@@ -593,11 +690,12 @@
593 ** The original name of the file is zOrig. The new filename is zNew.
594 */
595 static void mv_one_file(
596 int vid,
597 const char *zOrig,
598 const char *zNew
 
599 ){
600 int x = db_int(-1, "SELECT deleted FROM vfile WHERE pathname=%Q %s",
601 zNew, filename_collation());
602 if( x>=0 ){
603 if( x==0 ){
@@ -607,14 +705,75 @@
607 fossil_fatal("cannot rename '%s' to '%s' since the delete of '%s' has "
608 "not yet been committed", zOrig, zNew, zNew);
609 }
610 }
611 fossil_print("RENAME %s %s\n", zOrig, zNew);
612 db_multi_exec(
613 "UPDATE vfile SET pathname='%q' WHERE pathname='%q' %s AND vid=%d",
614 zNew, zOrig, filename_collation(), vid
615 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
616 }
617
618 /*
619 ** COMMAND: mv
620 ** COMMAND: rename*
@@ -623,27 +782,44 @@
623 ** or: %fossil mv|rename OLDNAME... DIR
624 **
625 ** Move or rename one or more files or directories within the repository tree.
626 ** You can either rename a file or directory or move it to another subdirectory.
627 **
628 ** This command does NOT rename or move the files on disk. This command merely
629 ** records the fact that filenames have changed so that appropriate notations
630 ** can be made at the next commit/check-in.
 
 
 
 
 
 
 
 
 
 
631 **
632 ** Options:
 
 
 
633 ** --case-sensitive <BOOL> Override the case-sensitive setting.
 
634 **
635 ** See also: changes, status
636 */
637 void mv_cmd(void){
638 int i;
639 int vid;
 
 
640 char *zDest;
641 Blob dest;
642 Stmt q;
643
644 db_must_be_within_tree();
 
645
646 /* We should be done with options.. */
647 verify_all_options();
648
649 vid = db_lget_int("checkout", 0);
@@ -653,10 +829,19 @@
653 if( g.argc<4 ){
654 usage("OLDNAME NEWNAME");
655 }
656 zDest = g.argv[g.argc-1];
657 db_begin_transaction();
 
 
 
 
 
 
 
 
 
658 file_tree_name(zDest, &dest, 1);
659 db_multi_exec(
660 "UPDATE vfile SET origname=pathname WHERE origname IS NULL;"
661 );
662 db_multi_exec(
@@ -711,18 +896,20 @@
711 }
712 db_prepare(&q, "SELECT f, t FROM mv ORDER BY f");
713 while( db_step(&q)==SQLITE_ROW ){
714 const char *zFrom = db_column_text(&q, 0);
715 const char *zTo = db_column_text(&q, 1);
716 mv_one_file(vid, zFrom, zTo);
 
717 }
718 db_finalize(&q);
719 db_end_transaction(0);
 
720 }
721
722 /*
723 ** Function for stash_apply to be able to restore a file and indicate
724 ** newly ADDED state.
725 */
726 int stash_add_files_in_sfile(int vid){
727 return add_files_in_sfile(vid);
728 }
729
--- src/add.c
+++ src/add.c
@@ -22,10 +22,28 @@
22 #include "add.h"
23 #include <assert.h>
24 #include <dirent.h>
25 #include "cygsup.h"
26
27 /*
28 ** WARNING: For Fossil version 1.x this value was always zero. For Fossil
29 ** 2.x, it will probably always be one. When this value is zero,
30 ** files in the checkout will not be moved by the "mv" command and
31 ** files in the checkout will not be removed by the "rm" command.
32 **
33 ** If the FOSSIL_ENABLE_LEGACY_MV_RM compile-time option is used,
34 ** the "mv-rm-files" setting will be consulted instead of using
35 ** this value.
36 **
37 ** To retain the Fossil version 1.x behavior when using Fossil 2.x,
38 ** the FOSSIL_ENABLE_LEGACY_MV_RM compile-time option must be used
39 ** -AND- the "mv-rm-files" setting must be set to zero.
40 */
41 #ifndef FOSSIL_MV_RM_FILE
42 #define FOSSIL_MV_RM_FILE (0)
43 #endif
44
45 /*
46 ** This routine returns the names of files in a working checkout that
47 ** are created by Fossil itself, and hence should not be added, deleted,
48 ** or merge, and should be omitted from "clean" and "extras" lists.
49 **
@@ -331,10 +349,58 @@
349 glob_free(pClean);
350
351 add_files_in_sfile(vid);
352 db_end_transaction(0);
353 }
354
355 /*
356 ** This function adds a file to list of files to delete from disk after
357 ** the other actions required for the parent operation have completed
358 ** successfully. The first time it is called for the current process,
359 ** it creates a temporary table named "fremove", to keep track of these
360 ** files.
361 */
362 static void add_file_to_remove(
363 const char *zOldName /* The old name of the file on disk. */
364 ){
365 static int tableCreated = 0;
366 Blob fullOldName;
367 if( !tableCreated ){
368 db_multi_exec("CREATE TEMP TABLE fremove(x TEXT PRIMARY KEY %s)",
369 filename_collation());
370 tableCreated = 1;
371 }
372 file_canonical_name(zOldName, &fullOldName, 0);
373 db_multi_exec("INSERT INTO fremove VALUES('%q');", blob_str(&fullOldName));
374 blob_reset(&fullOldName);
375 }
376
377 /*
378 ** This function deletes files from the checkout, using the file names
379 ** contained in the temporary table "fremove". The temporary table is
380 ** created on demand by the add_file_to_remove() function.
381 **
382 ** If dryRunFlag is non-zero, no files will be removed; however, their
383 ** names will still be output.
384 **
385 ** The temporary table "fremove" is dropped after being processed.
386 */
387 static void process_files_to_remove(
388 int dryRunFlag /* Zero to actually operate on the file-system. */
389 ){
390 Stmt remove;
391 db_prepare(&remove, "SELECT x FROM fremove ORDER BY x;");
392 while( db_step(&remove)==SQLITE_ROW ){
393 const char *zOldName = db_column_text(&remove, 0);
394 if( !dryRunFlag ){
395 file_delete(zOldName);
396 }
397 fossil_print("DELETED_FILE %s\n", zOldName);
398 }
399 db_finalize(&remove);
400 db_multi_exec("DROP TABLE fremove;");
401 }
402
403 /*
404 ** COMMAND: rm
405 ** COMMAND: delete
406 ** COMMAND: forget*
@@ -341,28 +407,55 @@
407 **
408 ** Usage: %fossil rm|delete|forget FILE1 ?FILE2 ...?
409 **
410 ** Remove one or more files or directories from the repository.
411 **
412 ** The 'rm' and 'delete' commands do NOT normally remove the files from
413 ** disk. They just mark the files as no longer being part of the project.
414 ** In other words, future changes to the named files will not be versioned.
415 ** However, the default behavior of this command may be overridden via the
416 ** command line options listed below and/or the 'mv-rm-files' setting.
417 **
418 ** The 'forget' command never removes files from disk, even when the command
419 ** line options and/or the 'mv-rm-files' setting would otherwise require it
420 ** to do so.
421 **
422 ** WARNING: If the "--hard" option is specified -OR- the "mv-rm-files"
423 ** setting is non-zero, files WILL BE removed from disk as well.
424 ** This does NOT apply to the 'forget' command.
425 **
426 ** Options:
427 ** --soft Skip removing files from the checkout.
428 ** This supersedes the --hard option.
429 ** --hard Remove files from the checkout.
430 ** --case-sensitive <BOOL> Override the case-sensitive setting.
431 ** -n|--dry-run If given, display instead of run actions.
432 **
433 ** See also: addremove, add
434 */
435 void delete_cmd(void){
436 int i;
437 int removeFiles;
438 int dryRunFlag;
439 Stmt loop;
440
441 dryRunFlag = find_option("dry-run","n",0)!=0;
442
443 /* We should be done with options.. */
444 verify_all_options();
445
446 db_must_be_within_tree();
447 db_begin_transaction();
448 if( g.argv[1][0]=='f' ){ /* i.e. "forget" */
449 removeFiles = 0;
450 }else{
451 #if FOSSIL_ENABLE_LEGACY_MV_RM
452 removeFiles = db_get_boolean("mv-rm-files",0);
453 #else
454 removeFiles = FOSSIL_MV_RM_FILE;
455 #endif
456 }
457 db_multi_exec("CREATE TEMP TABLE sfile(x TEXT PRIMARY KEY %s)",
458 filename_collation());
459 for(i=2; i<g.argc; i++){
460 Blob treeName;
461 char *zTreeName;
@@ -382,17 +475,21 @@
475 }
476
477 db_prepare(&loop, "SELECT x FROM sfile");
478 while( db_step(&loop)==SQLITE_ROW ){
479 fossil_print("DELETED %s\n", db_column_text(&loop, 0));
480 if( removeFiles ) add_file_to_remove(db_column_text(&loop, 0));
481 }
482 db_finalize(&loop);
483 if( !dryRunFlag ){
484 db_multi_exec(
485 "UPDATE vfile SET deleted=1 WHERE pathname IN sfile;"
486 "DELETE FROM vfile WHERE rid=0 AND deleted;"
487 );
488 }
489 db_end_transaction(0);
490 if( removeFiles ) process_files_to_remove(dryRunFlag);
491 }
492
493 /*
494 ** Capture the command-line --case-sensitive option.
495 */
@@ -593,11 +690,12 @@
690 ** The original name of the file is zOrig. The new filename is zNew.
691 */
692 static void mv_one_file(
693 int vid,
694 const char *zOrig,
695 const char *zNew,
696 int dryRunFlag
697 ){
698 int x = db_int(-1, "SELECT deleted FROM vfile WHERE pathname=%Q %s",
699 zNew, filename_collation());
700 if( x>=0 ){
701 if( x==0 ){
@@ -607,14 +705,75 @@
705 fossil_fatal("cannot rename '%s' to '%s' since the delete of '%s' has "
706 "not yet been committed", zOrig, zNew, zNew);
707 }
708 }
709 fossil_print("RENAME %s %s\n", zOrig, zNew);
710 if( !dryRunFlag ){
711 db_multi_exec(
712 "UPDATE vfile SET pathname='%q' WHERE pathname='%q' %s AND vid=%d",
713 zNew, zOrig, filename_collation(), vid
714 );
715 }
716 }
717
718 /*
719 ** This function adds a file to list of files to move on disk after the
720 ** other actions required for the parent operation have completed
721 ** successfully. The first time it is called for the current process,
722 ** it creates a temporary table named "fmove", to keep track of these
723 ** files.
724 */
725 static void add_file_to_move(
726 const char *zOldName, /* The old name of the file on disk. */
727 const char *zNewName /* The new name of the file on disk. */
728 ){
729 static int tableCreated = 0;
730 Blob fullOldName;
731 Blob fullNewName;
732 if( !tableCreated ){
733 db_multi_exec("CREATE TEMP TABLE fmove(x TEXT PRIMARY KEY %s, y TEXT %s)",
734 filename_collation(), filename_collation());
735 tableCreated = 1;
736 }
737 file_canonical_name(zOldName, &fullOldName, 0);
738 file_canonical_name(zNewName, &fullNewName, 0);
739 db_multi_exec("INSERT INTO fmove VALUES('%q','%q');",
740 blob_str(&fullOldName), blob_str(&fullNewName));
741 blob_reset(&fullNewName);
742 blob_reset(&fullOldName);
743 }
744
745 /*
746 ** This function moves files within the checkout, using the file names
747 ** contained in the temporary table "fmove". The temporary table is
748 ** created on demand by the add_file_to_move() function.
749 **
750 ** If dryRunFlag is non-zero, no files will be moved; however, their
751 ** names will still be output.
752 **
753 ** The temporary table "fmove" is dropped after being processed.
754 */
755 static void process_files_to_move(
756 int dryRunFlag /* Zero to actually operate on the file-system. */
757 ){
758 Stmt move;
759 db_prepare(&move, "SELECT x, y FROM fmove ORDER BY x;");
760 while( db_step(&move)==SQLITE_ROW ){
761 const char *zOldName = db_column_text(&move, 0);
762 const char *zNewName = db_column_text(&move, 1);
763 if( !dryRunFlag ){
764 if( file_wd_islink(zOldName) ){
765 symlink_copy(zOldName, zNewName);
766 }else{
767 file_copy(zOldName, zNewName);
768 }
769 file_delete(zOldName);
770 }
771 fossil_print("MOVED_FILE %s\n", zOldName);
772 }
773 db_finalize(&move);
774 db_multi_exec("DROP TABLE fmove;");
775 }
776
777 /*
778 ** COMMAND: mv
779 ** COMMAND: rename*
@@ -623,27 +782,44 @@
782 ** or: %fossil mv|rename OLDNAME... DIR
783 **
784 ** Move or rename one or more files or directories within the repository tree.
785 ** You can either rename a file or directory or move it to another subdirectory.
786 **
787 ** The 'mv' command does NOT normally rename or move the files on disk.
788 ** This command merely records the fact that file names have changed so
789 ** that appropriate notations can be made at the next commit/check-in.
790 ** However, the default behavior of this command may be overridden via
791 ** command line options listed below and/or the 'mv-rm-files' setting.
792 **
793 ** The 'rename' command never renames or moves files on disk, even when the
794 ** command line options and/or the 'mv-rm-files' setting would otherwise
795 ** require it to do so.
796 **
797 ** WARNING: If the "--hard" option is specified -OR- the "mv-rm-files"
798 ** setting is non-zero, files WILL BE renamed or moved on disk
799 ** as well. This does NOT apply to the 'rename' command.
800 **
801 ** Options:
802 ** --soft Skip moving files within the checkout.
803 ** This supersedes the --hard option.
804 ** --hard Move files within the checkout.
805 ** --case-sensitive <BOOL> Override the case-sensitive setting.
806 ** -n|--dry-run If given, display instead of run actions.
807 **
808 ** See also: changes, status
809 */
810 void mv_cmd(void){
811 int i;
812 int vid;
813 int moveFiles;
814 int dryRunFlag;
815 char *zDest;
816 Blob dest;
817 Stmt q;
818
819 db_must_be_within_tree();
820 dryRunFlag = find_option("dry-run","n",0)!=0;
821
822 /* We should be done with options.. */
823 verify_all_options();
824
825 vid = db_lget_int("checkout", 0);
@@ -653,10 +829,19 @@
829 if( g.argc<4 ){
830 usage("OLDNAME NEWNAME");
831 }
832 zDest = g.argv[g.argc-1];
833 db_begin_transaction();
834 if( g.argv[1][0]=='r' ){ /* i.e. "rename" */
835 moveFiles = 0;
836 }else{
837 #if FOSSIL_ENABLE_LEGACY_MV_RM
838 moveFiles = db_get_boolean("mv-rm-files",0);
839 #else
840 moveFiles = FOSSIL_MV_RM_FILE;
841 #endif
842 }
843 file_tree_name(zDest, &dest, 1);
844 db_multi_exec(
845 "UPDATE vfile SET origname=pathname WHERE origname IS NULL;"
846 );
847 db_multi_exec(
@@ -711,18 +896,20 @@
896 }
897 db_prepare(&q, "SELECT f, t FROM mv ORDER BY f");
898 while( db_step(&q)==SQLITE_ROW ){
899 const char *zFrom = db_column_text(&q, 0);
900 const char *zTo = db_column_text(&q, 1);
901 mv_one_file(vid, zFrom, zTo, dryRunFlag);
902 if( moveFiles ) add_file_to_move(zFrom, zTo);
903 }
904 db_finalize(&q);
905 db_end_transaction(0);
906 if( moveFiles ) process_files_to_move(dryRunFlag);
907 }
908
909 /*
910 ** Function for stash_apply to be able to restore a file and indicate
911 ** newly ADDED state.
912 */
913 int stash_add_files_in_sfile(int vid){
914 return add_files_in_sfile(vid);
915 }
916
--- src/configure.c
+++ src/configure.c
@@ -126,10 +126,14 @@
126126
{ "crnl-glob", CONFIGSET_PROJ },
127127
{ "encoding-glob", CONFIGSET_PROJ },
128128
{ "empty-dirs", CONFIGSET_PROJ },
129129
{ "allow-symlinks", CONFIGSET_PROJ },
130130
{ "dotfiles", CONFIGSET_PROJ },
131
+
132
+#ifdef FOSSIL_ENABLE_LEGACY_MV_RM
133
+ { "mv-rm-files", CONFIGSET_PROJ },
134
+#endif
131135
132136
{ "ticket-table", CONFIGSET_TKT },
133137
{ "ticket-common", CONFIGSET_TKT },
134138
{ "ticket-change", CONFIGSET_TKT },
135139
{ "ticket-newpage", CONFIGSET_TKT },
136140
--- src/configure.c
+++ src/configure.c
@@ -126,10 +126,14 @@
126 { "crnl-glob", CONFIGSET_PROJ },
127 { "encoding-glob", CONFIGSET_PROJ },
128 { "empty-dirs", CONFIGSET_PROJ },
129 { "allow-symlinks", CONFIGSET_PROJ },
130 { "dotfiles", CONFIGSET_PROJ },
 
 
 
 
131
132 { "ticket-table", CONFIGSET_TKT },
133 { "ticket-common", CONFIGSET_TKT },
134 { "ticket-change", CONFIGSET_TKT },
135 { "ticket-newpage", CONFIGSET_TKT },
136
--- src/configure.c
+++ src/configure.c
@@ -126,10 +126,14 @@
126 { "crnl-glob", CONFIGSET_PROJ },
127 { "encoding-glob", CONFIGSET_PROJ },
128 { "empty-dirs", CONFIGSET_PROJ },
129 { "allow-symlinks", CONFIGSET_PROJ },
130 { "dotfiles", CONFIGSET_PROJ },
131
132 #ifdef FOSSIL_ENABLE_LEGACY_MV_RM
133 { "mv-rm-files", CONFIGSET_PROJ },
134 #endif
135
136 { "ticket-table", CONFIGSET_TKT },
137 { "ticket-common", CONFIGSET_TKT },
138 { "ticket-change", CONFIGSET_TKT },
139 { "ticket-newpage", CONFIGSET_TKT },
140
+9
--- src/db.c
+++ src/db.c
@@ -2362,10 +2362,13 @@
23622362
{ "main-branch", 0, 40, 0, 0, "trunk" },
23632363
{ "manifest", 0, 0, 1, 0, "off" },
23642364
{ "max-loadavg", 0, 25, 0, 0, "0.0" },
23652365
{ "max-upload", 0, 25, 0, 0, "250000" },
23662366
{ "mtime-changes", 0, 0, 0, 0, "on" },
2367
+#if FOSSIL_ENABLE_LEGACY_MV_RM
2368
+ { "mv-rm-files", 0, 0, 0, 0, "off" },
2369
+#endif
23672370
{ "pgp-command", 0, 40, 0, 0, "gpg --clearsign -o " },
23682371
{ "proxy", 0, 32, 0, 0, "off" },
23692372
{ "relative-paths", 0, 0, 0, 0, "on" },
23702373
{ "repo-cksum", 0, 0, 0, 0, "on" },
23712374
{ "self-register", 0, 0, 0, 0, "off" },
@@ -2572,10 +2575,16 @@
25722575
** max-upload A limit on the size of uplink HTTP requests. The
25732576
** default is 250000 bytes.
25742577
**
25752578
** mtime-changes Use file modification times (mtimes) to detect when
25762579
** files have been modified. (Default "on".)
2580
+**
2581
+** mv-rm-files If enabled (and Fossil was compiled with legacy "mv/rm"
2582
+** support), the "mv" and "rename" commands will also move
2583
+** the associated files within the checkout -AND- the "rm"
2584
+** and "delete" commands will also remove the associated
2585
+** files from within the checkout. Default: off.
25772586
**
25782587
** pgp-command Command used to clear-sign manifests at check-in.
25792588
** The default is "gpg --clearsign -o ".
25802589
**
25812590
** proxy URL of the HTTP proxy. If undefined or "off" then
25822591
--- src/db.c
+++ src/db.c
@@ -2362,10 +2362,13 @@
2362 { "main-branch", 0, 40, 0, 0, "trunk" },
2363 { "manifest", 0, 0, 1, 0, "off" },
2364 { "max-loadavg", 0, 25, 0, 0, "0.0" },
2365 { "max-upload", 0, 25, 0, 0, "250000" },
2366 { "mtime-changes", 0, 0, 0, 0, "on" },
 
 
 
2367 { "pgp-command", 0, 40, 0, 0, "gpg --clearsign -o " },
2368 { "proxy", 0, 32, 0, 0, "off" },
2369 { "relative-paths", 0, 0, 0, 0, "on" },
2370 { "repo-cksum", 0, 0, 0, 0, "on" },
2371 { "self-register", 0, 0, 0, 0, "off" },
@@ -2572,10 +2575,16 @@
2572 ** max-upload A limit on the size of uplink HTTP requests. The
2573 ** default is 250000 bytes.
2574 **
2575 ** mtime-changes Use file modification times (mtimes) to detect when
2576 ** files have been modified. (Default "on".)
 
 
 
 
 
 
2577 **
2578 ** pgp-command Command used to clear-sign manifests at check-in.
2579 ** The default is "gpg --clearsign -o ".
2580 **
2581 ** proxy URL of the HTTP proxy. If undefined or "off" then
2582
--- src/db.c
+++ src/db.c
@@ -2362,10 +2362,13 @@
2362 { "main-branch", 0, 40, 0, 0, "trunk" },
2363 { "manifest", 0, 0, 1, 0, "off" },
2364 { "max-loadavg", 0, 25, 0, 0, "0.0" },
2365 { "max-upload", 0, 25, 0, 0, "250000" },
2366 { "mtime-changes", 0, 0, 0, 0, "on" },
2367 #if FOSSIL_ENABLE_LEGACY_MV_RM
2368 { "mv-rm-files", 0, 0, 0, 0, "off" },
2369 #endif
2370 { "pgp-command", 0, 40, 0, 0, "gpg --clearsign -o " },
2371 { "proxy", 0, 32, 0, 0, "off" },
2372 { "relative-paths", 0, 0, 0, 0, "on" },
2373 { "repo-cksum", 0, 0, 0, 0, "on" },
2374 { "self-register", 0, 0, 0, 0, "off" },
@@ -2572,10 +2575,16 @@
2575 ** max-upload A limit on the size of uplink HTTP requests. The
2576 ** default is 250000 bytes.
2577 **
2578 ** mtime-changes Use file modification times (mtimes) to detect when
2579 ** files have been modified. (Default "on".)
2580 **
2581 ** mv-rm-files If enabled (and Fossil was compiled with legacy "mv/rm"
2582 ** support), the "mv" and "rename" commands will also move
2583 ** the associated files within the checkout -AND- the "rm"
2584 ** and "delete" commands will also remove the associated
2585 ** files from within the checkout. Default: off.
2586 **
2587 ** pgp-command Command used to clear-sign manifests at check-in.
2588 ** The default is "gpg --clearsign -o ".
2589 **
2590 ** proxy URL of the HTTP proxy. If undefined or "off" then
2591
+3
--- src/main.c
+++ src/main.c
@@ -1007,10 +1007,13 @@
10071007
#else
10081008
fossil_print("zlib %s, loaded %s\n", ZLIB_VERSION, zlibVersion());
10091009
#endif
10101010
#if defined(FOSSIL_ENABLE_SSL)
10111011
fossil_print("SSL (%s)\n", SSLeay_version(SSLEAY_VERSION));
1012
+#endif
1013
+#if defined(FOSSIL_ENABLE_LEGACY_MV_RM)
1014
+ fossil_print("LEGACY_MV_RM\n");
10121015
#endif
10131016
#if defined(FOSSIL_ENABLE_TH1_DOCS)
10141017
fossil_print("TH1_DOCS\n");
10151018
#endif
10161019
#if defined(FOSSIL_ENABLE_TH1_HOOKS)
10171020
--- src/main.c
+++ src/main.c
@@ -1007,10 +1007,13 @@
1007 #else
1008 fossil_print("zlib %s, loaded %s\n", ZLIB_VERSION, zlibVersion());
1009 #endif
1010 #if defined(FOSSIL_ENABLE_SSL)
1011 fossil_print("SSL (%s)\n", SSLeay_version(SSLEAY_VERSION));
 
 
 
1012 #endif
1013 #if defined(FOSSIL_ENABLE_TH1_DOCS)
1014 fossil_print("TH1_DOCS\n");
1015 #endif
1016 #if defined(FOSSIL_ENABLE_TH1_HOOKS)
1017
--- src/main.c
+++ src/main.c
@@ -1007,10 +1007,13 @@
1007 #else
1008 fossil_print("zlib %s, loaded %s\n", ZLIB_VERSION, zlibVersion());
1009 #endif
1010 #if defined(FOSSIL_ENABLE_SSL)
1011 fossil_print("SSL (%s)\n", SSLeay_version(SSLEAY_VERSION));
1012 #endif
1013 #if defined(FOSSIL_ENABLE_LEGACY_MV_RM)
1014 fossil_print("LEGACY_MV_RM\n");
1015 #endif
1016 #if defined(FOSSIL_ENABLE_TH1_DOCS)
1017 fossil_print("TH1_DOCS\n");
1018 #endif
1019 #if defined(FOSSIL_ENABLE_TH1_HOOKS)
1020
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -493,10 +493,14 @@
493493
494494
#### Automatically build OpenSSL when building Fossil (causes rebuild
495495
# issues when building incrementally).
496496
#
497497
# FOSSIL_BUILD_SSL = 1
498
+
499
+#### Enable legacy treatment of mv/rm (skip checkout files)
500
+#
501
+# FOSSIL_ENABLE_LEGACY_MV_RM = 1
498502
499503
#### Enable TH1 scripts in embedded documentation files
500504
#
501505
# FOSSIL_ENABLE_TH1_DOCS = 1
502506
@@ -692,10 +696,16 @@
692696
# With HTTPS support
693697
ifdef FOSSIL_ENABLE_SSL
694698
TCC += -DFOSSIL_ENABLE_SSL=1
695699
RCC += -DFOSSIL_ENABLE_SSL=1
696700
endif
701
+
702
+# With legacy treatment of mv/rm
703
+ifdef FOSSIL_ENABLE_LEGACY_MV_RM
704
+TCC += -DFOSSIL_ENABLE_LEGACY_MV_RM=1
705
+RCC += -DFOSSIL_ENABLE_LEGACY_MV_RM=1
706
+endif
697707
698708
# With TH1 embedded docs support
699709
ifdef FOSSIL_ENABLE_TH1_DOCS
700710
TCC += -DFOSSIL_ENABLE_TH1_DOCS=1
701711
RCC += -DFOSSIL_ENABLE_TH1_DOCS=1
@@ -1309,10 +1319,13 @@
13091319
# Uncomment to enable SSL support
13101320
# FOSSIL_ENABLE_SSL = 1
13111321
13121322
# Uncomment to build SSL libraries
13131323
# FOSSIL_BUILD_SSL = 1
1324
+
1325
+# Uncomment to enable legacy treatment of mv/rm
1326
+# FOSSIL_ENABLE_LEGACY_MV_RM = 1
13141327
13151328
# Uncomment to enable TH1 scripts in embedded documentation files
13161329
# FOSSIL_ENABLE_TH1_DOCS = 1
13171330
13181331
# Uncomment to enable TH1 hooks
@@ -1425,10 +1438,15 @@
14251438
TCC = $(TCC) /DFOSSIL_ENABLE_SSL=1
14261439
RCC = $(RCC) /DFOSSIL_ENABLE_SSL=1
14271440
LIBS = $(LIBS) $(SSLLIB)
14281441
LIBDIR = $(LIBDIR) /LIBPATH:$(SSLLIBDIR)
14291442
!endif
1443
+
1444
+!ifdef FOSSIL_ENABLE_LEGACY_MV_RM
1445
+TCC = $(TCC) /DFOSSIL_ENABLE_LEGACY_MV_RM=1
1446
+RCC = $(RCC) /DFOSSIL_ENABLE_LEGACY_MV_RM=1
1447
+!endif
14301448
14311449
!ifdef FOSSIL_ENABLE_TH1_DOCS
14321450
TCC = $(TCC) /DFOSSIL_ENABLE_TH1_DOCS=1
14331451
RCC = $(RCC) /DFOSSIL_ENABLE_TH1_DOCS=1
14341452
!endif
14351453
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -493,10 +493,14 @@
493
494 #### Automatically build OpenSSL when building Fossil (causes rebuild
495 # issues when building incrementally).
496 #
497 # FOSSIL_BUILD_SSL = 1
 
 
 
 
498
499 #### Enable TH1 scripts in embedded documentation files
500 #
501 # FOSSIL_ENABLE_TH1_DOCS = 1
502
@@ -692,10 +696,16 @@
692 # With HTTPS support
693 ifdef FOSSIL_ENABLE_SSL
694 TCC += -DFOSSIL_ENABLE_SSL=1
695 RCC += -DFOSSIL_ENABLE_SSL=1
696 endif
 
 
 
 
 
 
697
698 # With TH1 embedded docs support
699 ifdef FOSSIL_ENABLE_TH1_DOCS
700 TCC += -DFOSSIL_ENABLE_TH1_DOCS=1
701 RCC += -DFOSSIL_ENABLE_TH1_DOCS=1
@@ -1309,10 +1319,13 @@
1309 # Uncomment to enable SSL support
1310 # FOSSIL_ENABLE_SSL = 1
1311
1312 # Uncomment to build SSL libraries
1313 # FOSSIL_BUILD_SSL = 1
 
 
 
1314
1315 # Uncomment to enable TH1 scripts in embedded documentation files
1316 # FOSSIL_ENABLE_TH1_DOCS = 1
1317
1318 # Uncomment to enable TH1 hooks
@@ -1425,10 +1438,15 @@
1425 TCC = $(TCC) /DFOSSIL_ENABLE_SSL=1
1426 RCC = $(RCC) /DFOSSIL_ENABLE_SSL=1
1427 LIBS = $(LIBS) $(SSLLIB)
1428 LIBDIR = $(LIBDIR) /LIBPATH:$(SSLLIBDIR)
1429 !endif
 
 
 
 
 
1430
1431 !ifdef FOSSIL_ENABLE_TH1_DOCS
1432 TCC = $(TCC) /DFOSSIL_ENABLE_TH1_DOCS=1
1433 RCC = $(RCC) /DFOSSIL_ENABLE_TH1_DOCS=1
1434 !endif
1435
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -493,10 +493,14 @@
493
494 #### Automatically build OpenSSL when building Fossil (causes rebuild
495 # issues when building incrementally).
496 #
497 # FOSSIL_BUILD_SSL = 1
498
499 #### Enable legacy treatment of mv/rm (skip checkout files)
500 #
501 # FOSSIL_ENABLE_LEGACY_MV_RM = 1
502
503 #### Enable TH1 scripts in embedded documentation files
504 #
505 # FOSSIL_ENABLE_TH1_DOCS = 1
506
@@ -692,10 +696,16 @@
696 # With HTTPS support
697 ifdef FOSSIL_ENABLE_SSL
698 TCC += -DFOSSIL_ENABLE_SSL=1
699 RCC += -DFOSSIL_ENABLE_SSL=1
700 endif
701
702 # With legacy treatment of mv/rm
703 ifdef FOSSIL_ENABLE_LEGACY_MV_RM
704 TCC += -DFOSSIL_ENABLE_LEGACY_MV_RM=1
705 RCC += -DFOSSIL_ENABLE_LEGACY_MV_RM=1
706 endif
707
708 # With TH1 embedded docs support
709 ifdef FOSSIL_ENABLE_TH1_DOCS
710 TCC += -DFOSSIL_ENABLE_TH1_DOCS=1
711 RCC += -DFOSSIL_ENABLE_TH1_DOCS=1
@@ -1309,10 +1319,13 @@
1319 # Uncomment to enable SSL support
1320 # FOSSIL_ENABLE_SSL = 1
1321
1322 # Uncomment to build SSL libraries
1323 # FOSSIL_BUILD_SSL = 1
1324
1325 # Uncomment to enable legacy treatment of mv/rm
1326 # FOSSIL_ENABLE_LEGACY_MV_RM = 1
1327
1328 # Uncomment to enable TH1 scripts in embedded documentation files
1329 # FOSSIL_ENABLE_TH1_DOCS = 1
1330
1331 # Uncomment to enable TH1 hooks
@@ -1425,10 +1438,15 @@
1438 TCC = $(TCC) /DFOSSIL_ENABLE_SSL=1
1439 RCC = $(RCC) /DFOSSIL_ENABLE_SSL=1
1440 LIBS = $(LIBS) $(SSLLIB)
1441 LIBDIR = $(LIBDIR) /LIBPATH:$(SSLLIBDIR)
1442 !endif
1443
1444 !ifdef FOSSIL_ENABLE_LEGACY_MV_RM
1445 TCC = $(TCC) /DFOSSIL_ENABLE_LEGACY_MV_RM=1
1446 RCC = $(RCC) /DFOSSIL_ENABLE_LEGACY_MV_RM=1
1447 !endif
1448
1449 !ifdef FOSSIL_ENABLE_TH1_DOCS
1450 TCC = $(TCC) /DFOSSIL_ENABLE_TH1_DOCS=1
1451 RCC = $(RCC) /DFOSSIL_ENABLE_TH1_DOCS=1
1452 !endif
1453
--- src/th_main.c
+++ src/th_main.c
@@ -507,10 +507,11 @@
507507
**
508508
** Return true if the fossil binary has the given compile-time feature
509509
** enabled. The set of features includes:
510510
**
511511
** "ssl" = FOSSIL_ENABLE_SSL
512
+** "legacyMvRm" = FOSSIL_ENABLE_LEGACY_MV_RM
512513
** "th1Docs" = FOSSIL_ENABLE_TH1_DOCS
513514
** "th1Hooks" = FOSSIL_ENABLE_TH1_HOOKS
514515
** "tcl" = FOSSIL_ENABLE_TCL
515516
** "useTclStubs" = USE_TCL_STUBS
516517
** "tclStubs" = FOSSIL_ENABLE_TCL_STUBS
@@ -538,10 +539,15 @@
538539
}
539540
#if defined(FOSSIL_ENABLE_SSL)
540541
else if( 0 == fossil_strnicmp( zArg, "ssl\0", 4 ) ){
541542
rc = 1;
542543
}
544
+#endif
545
+#if defined(FOSSIL_ENABLE_LEGACY_MV_RM)
546
+ else if( 0 == fossil_strnicmp( zArg, "legacyMvRm\0", 11 ) ){
547
+ rc = 1;
548
+ }
543549
#endif
544550
#if defined(FOSSIL_ENABLE_TH1_DOCS)
545551
else if( 0 == fossil_strnicmp( zArg, "th1Docs\0", 8 ) ){
546552
rc = 1;
547553
}
548554
--- src/th_main.c
+++ src/th_main.c
@@ -507,10 +507,11 @@
507 **
508 ** Return true if the fossil binary has the given compile-time feature
509 ** enabled. The set of features includes:
510 **
511 ** "ssl" = FOSSIL_ENABLE_SSL
 
512 ** "th1Docs" = FOSSIL_ENABLE_TH1_DOCS
513 ** "th1Hooks" = FOSSIL_ENABLE_TH1_HOOKS
514 ** "tcl" = FOSSIL_ENABLE_TCL
515 ** "useTclStubs" = USE_TCL_STUBS
516 ** "tclStubs" = FOSSIL_ENABLE_TCL_STUBS
@@ -538,10 +539,15 @@
538 }
539 #if defined(FOSSIL_ENABLE_SSL)
540 else if( 0 == fossil_strnicmp( zArg, "ssl\0", 4 ) ){
541 rc = 1;
542 }
 
 
 
 
 
543 #endif
544 #if defined(FOSSIL_ENABLE_TH1_DOCS)
545 else if( 0 == fossil_strnicmp( zArg, "th1Docs\0", 8 ) ){
546 rc = 1;
547 }
548
--- src/th_main.c
+++ src/th_main.c
@@ -507,10 +507,11 @@
507 **
508 ** Return true if the fossil binary has the given compile-time feature
509 ** enabled. The set of features includes:
510 **
511 ** "ssl" = FOSSIL_ENABLE_SSL
512 ** "legacyMvRm" = FOSSIL_ENABLE_LEGACY_MV_RM
513 ** "th1Docs" = FOSSIL_ENABLE_TH1_DOCS
514 ** "th1Hooks" = FOSSIL_ENABLE_TH1_HOOKS
515 ** "tcl" = FOSSIL_ENABLE_TCL
516 ** "useTclStubs" = USE_TCL_STUBS
517 ** "tclStubs" = FOSSIL_ENABLE_TCL_STUBS
@@ -538,10 +539,15 @@
539 }
540 #if defined(FOSSIL_ENABLE_SSL)
541 else if( 0 == fossil_strnicmp( zArg, "ssl\0", 4 ) ){
542 rc = 1;
543 }
544 #endif
545 #if defined(FOSSIL_ENABLE_LEGACY_MV_RM)
546 else if( 0 == fossil_strnicmp( zArg, "legacyMvRm\0", 11 ) ){
547 rc = 1;
548 }
549 #endif
550 #if defined(FOSSIL_ENABLE_TH1_DOCS)
551 else if( 0 == fossil_strnicmp( zArg, "th1Docs\0", 8 ) ){
552 rc = 1;
553 }
554
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -52,10 +52,14 @@
5252
5353
#### Automatically build OpenSSL when building Fossil (causes rebuild
5454
# issues when building incrementally).
5555
#
5656
# FOSSIL_BUILD_SSL = 1
57
+
58
+#### Enable legacy treatment of mv/rm (skip checkout files)
59
+#
60
+# FOSSIL_ENABLE_LEGACY_MV_RM = 1
5761
5862
#### Enable TH1 scripts in embedded documentation files
5963
#
6064
# FOSSIL_ENABLE_TH1_DOCS = 1
6165
@@ -251,10 +255,16 @@
251255
# With HTTPS support
252256
ifdef FOSSIL_ENABLE_SSL
253257
TCC += -DFOSSIL_ENABLE_SSL=1
254258
RCC += -DFOSSIL_ENABLE_SSL=1
255259
endif
260
+
261
+# With legacy treatment of mv/rm
262
+ifdef FOSSIL_ENABLE_LEGACY_MV_RM
263
+TCC += -DFOSSIL_ENABLE_LEGACY_MV_RM=1
264
+RCC += -DFOSSIL_ENABLE_LEGACY_MV_RM=1
265
+endif
256266
257267
# With TH1 embedded docs support
258268
ifdef FOSSIL_ENABLE_TH1_DOCS
259269
TCC += -DFOSSIL_ENABLE_TH1_DOCS=1
260270
RCC += -DFOSSIL_ENABLE_TH1_DOCS=1
261271
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -52,10 +52,14 @@
52
53 #### Automatically build OpenSSL when building Fossil (causes rebuild
54 # issues when building incrementally).
55 #
56 # FOSSIL_BUILD_SSL = 1
 
 
 
 
57
58 #### Enable TH1 scripts in embedded documentation files
59 #
60 # FOSSIL_ENABLE_TH1_DOCS = 1
61
@@ -251,10 +255,16 @@
251 # With HTTPS support
252 ifdef FOSSIL_ENABLE_SSL
253 TCC += -DFOSSIL_ENABLE_SSL=1
254 RCC += -DFOSSIL_ENABLE_SSL=1
255 endif
 
 
 
 
 
 
256
257 # With TH1 embedded docs support
258 ifdef FOSSIL_ENABLE_TH1_DOCS
259 TCC += -DFOSSIL_ENABLE_TH1_DOCS=1
260 RCC += -DFOSSIL_ENABLE_TH1_DOCS=1
261
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -52,10 +52,14 @@
52
53 #### Automatically build OpenSSL when building Fossil (causes rebuild
54 # issues when building incrementally).
55 #
56 # FOSSIL_BUILD_SSL = 1
57
58 #### Enable legacy treatment of mv/rm (skip checkout files)
59 #
60 # FOSSIL_ENABLE_LEGACY_MV_RM = 1
61
62 #### Enable TH1 scripts in embedded documentation files
63 #
64 # FOSSIL_ENABLE_TH1_DOCS = 1
65
@@ -251,10 +255,16 @@
255 # With HTTPS support
256 ifdef FOSSIL_ENABLE_SSL
257 TCC += -DFOSSIL_ENABLE_SSL=1
258 RCC += -DFOSSIL_ENABLE_SSL=1
259 endif
260
261 # With legacy treatment of mv/rm
262 ifdef FOSSIL_ENABLE_LEGACY_MV_RM
263 TCC += -DFOSSIL_ENABLE_LEGACY_MV_RM=1
264 RCC += -DFOSSIL_ENABLE_LEGACY_MV_RM=1
265 endif
266
267 # With TH1 embedded docs support
268 ifdef FOSSIL_ENABLE_TH1_DOCS
269 TCC += -DFOSSIL_ENABLE_TH1_DOCS=1
270 RCC += -DFOSSIL_ENABLE_TH1_DOCS=1
271
--- win/Makefile.mingw.mistachkin
+++ win/Makefile.mingw.mistachkin
@@ -52,10 +52,14 @@
5252
5353
#### Automatically build OpenSSL when building Fossil (causes rebuild
5454
# issues when building incrementally).
5555
#
5656
# FOSSIL_BUILD_SSL = 1
57
+
58
+#### Enable legacy treatment of mv/rm (skip checkout files)
59
+#
60
+FOSSIL_ENABLE_LEGACY_MV_RM = 1
5761
5862
#### Enable TH1 scripts in embedded documentation files
5963
#
6064
FOSSIL_ENABLE_TH1_DOCS = 1
6165
@@ -251,10 +255,16 @@
251255
# With HTTPS support
252256
ifdef FOSSIL_ENABLE_SSL
253257
TCC += -DFOSSIL_ENABLE_SSL=1
254258
RCC += -DFOSSIL_ENABLE_SSL=1
255259
endif
260
+
261
+# With legacy treatment of mv/rm
262
+ifdef FOSSIL_ENABLE_LEGACY_MV_RM
263
+TCC += -DFOSSIL_ENABLE_LEGACY_MV_RM=1
264
+RCC += -DFOSSIL_ENABLE_LEGACY_MV_RM=1
265
+endif
256266
257267
# With TH1 embedded docs support
258268
ifdef FOSSIL_ENABLE_TH1_DOCS
259269
TCC += -DFOSSIL_ENABLE_TH1_DOCS=1
260270
RCC += -DFOSSIL_ENABLE_TH1_DOCS=1
261271
--- win/Makefile.mingw.mistachkin
+++ win/Makefile.mingw.mistachkin
@@ -52,10 +52,14 @@
52
53 #### Automatically build OpenSSL when building Fossil (causes rebuild
54 # issues when building incrementally).
55 #
56 # FOSSIL_BUILD_SSL = 1
 
 
 
 
57
58 #### Enable TH1 scripts in embedded documentation files
59 #
60 FOSSIL_ENABLE_TH1_DOCS = 1
61
@@ -251,10 +255,16 @@
251 # With HTTPS support
252 ifdef FOSSIL_ENABLE_SSL
253 TCC += -DFOSSIL_ENABLE_SSL=1
254 RCC += -DFOSSIL_ENABLE_SSL=1
255 endif
 
 
 
 
 
 
256
257 # With TH1 embedded docs support
258 ifdef FOSSIL_ENABLE_TH1_DOCS
259 TCC += -DFOSSIL_ENABLE_TH1_DOCS=1
260 RCC += -DFOSSIL_ENABLE_TH1_DOCS=1
261
--- win/Makefile.mingw.mistachkin
+++ win/Makefile.mingw.mistachkin
@@ -52,10 +52,14 @@
52
53 #### Automatically build OpenSSL when building Fossil (causes rebuild
54 # issues when building incrementally).
55 #
56 # FOSSIL_BUILD_SSL = 1
57
58 #### Enable legacy treatment of mv/rm (skip checkout files)
59 #
60 FOSSIL_ENABLE_LEGACY_MV_RM = 1
61
62 #### Enable TH1 scripts in embedded documentation files
63 #
64 FOSSIL_ENABLE_TH1_DOCS = 1
65
@@ -251,10 +255,16 @@
255 # With HTTPS support
256 ifdef FOSSIL_ENABLE_SSL
257 TCC += -DFOSSIL_ENABLE_SSL=1
258 RCC += -DFOSSIL_ENABLE_SSL=1
259 endif
260
261 # With legacy treatment of mv/rm
262 ifdef FOSSIL_ENABLE_LEGACY_MV_RM
263 TCC += -DFOSSIL_ENABLE_LEGACY_MV_RM=1
264 RCC += -DFOSSIL_ENABLE_LEGACY_MV_RM=1
265 endif
266
267 # With TH1 embedded docs support
268 ifdef FOSSIL_ENABLE_TH1_DOCS
269 TCC += -DFOSSIL_ENABLE_TH1_DOCS=1
270 RCC += -DFOSSIL_ENABLE_TH1_DOCS=1
271
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -44,10 +44,13 @@
4444
# Uncomment to enable SSL support
4545
# FOSSIL_ENABLE_SSL = 1
4646
4747
# Uncomment to build SSL libraries
4848
# FOSSIL_BUILD_SSL = 1
49
+
50
+# Uncomment to enable legacy treatment of mv/rm
51
+# FOSSIL_ENABLE_LEGACY_MV_RM = 1
4952
5053
# Uncomment to enable TH1 scripts in embedded documentation files
5154
# FOSSIL_ENABLE_TH1_DOCS = 1
5255
5356
# Uncomment to enable TH1 hooks
@@ -160,10 +163,15 @@
160163
TCC = $(TCC) /DFOSSIL_ENABLE_SSL=1
161164
RCC = $(RCC) /DFOSSIL_ENABLE_SSL=1
162165
LIBS = $(LIBS) $(SSLLIB)
163166
LIBDIR = $(LIBDIR) /LIBPATH:$(SSLLIBDIR)
164167
!endif
168
+
169
+!ifdef FOSSIL_ENABLE_LEGACY_MV_RM
170
+TCC = $(TCC) /DFOSSIL_ENABLE_LEGACY_MV_RM=1
171
+RCC = $(RCC) /DFOSSIL_ENABLE_LEGACY_MV_RM=1
172
+!endif
165173
166174
!ifdef FOSSIL_ENABLE_TH1_DOCS
167175
TCC = $(TCC) /DFOSSIL_ENABLE_TH1_DOCS=1
168176
RCC = $(RCC) /DFOSSIL_ENABLE_TH1_DOCS=1
169177
!endif
170178
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -44,10 +44,13 @@
44 # Uncomment to enable SSL support
45 # FOSSIL_ENABLE_SSL = 1
46
47 # Uncomment to build SSL libraries
48 # FOSSIL_BUILD_SSL = 1
 
 
 
49
50 # Uncomment to enable TH1 scripts in embedded documentation files
51 # FOSSIL_ENABLE_TH1_DOCS = 1
52
53 # Uncomment to enable TH1 hooks
@@ -160,10 +163,15 @@
160 TCC = $(TCC) /DFOSSIL_ENABLE_SSL=1
161 RCC = $(RCC) /DFOSSIL_ENABLE_SSL=1
162 LIBS = $(LIBS) $(SSLLIB)
163 LIBDIR = $(LIBDIR) /LIBPATH:$(SSLLIBDIR)
164 !endif
 
 
 
 
 
165
166 !ifdef FOSSIL_ENABLE_TH1_DOCS
167 TCC = $(TCC) /DFOSSIL_ENABLE_TH1_DOCS=1
168 RCC = $(RCC) /DFOSSIL_ENABLE_TH1_DOCS=1
169 !endif
170
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -44,10 +44,13 @@
44 # Uncomment to enable SSL support
45 # FOSSIL_ENABLE_SSL = 1
46
47 # Uncomment to build SSL libraries
48 # FOSSIL_BUILD_SSL = 1
49
50 # Uncomment to enable legacy treatment of mv/rm
51 # FOSSIL_ENABLE_LEGACY_MV_RM = 1
52
53 # Uncomment to enable TH1 scripts in embedded documentation files
54 # FOSSIL_ENABLE_TH1_DOCS = 1
55
56 # Uncomment to enable TH1 hooks
@@ -160,10 +163,15 @@
163 TCC = $(TCC) /DFOSSIL_ENABLE_SSL=1
164 RCC = $(RCC) /DFOSSIL_ENABLE_SSL=1
165 LIBS = $(LIBS) $(SSLLIB)
166 LIBDIR = $(LIBDIR) /LIBPATH:$(SSLLIBDIR)
167 !endif
168
169 !ifdef FOSSIL_ENABLE_LEGACY_MV_RM
170 TCC = $(TCC) /DFOSSIL_ENABLE_LEGACY_MV_RM=1
171 RCC = $(RCC) /DFOSSIL_ENABLE_LEGACY_MV_RM=1
172 !endif
173
174 !ifdef FOSSIL_ENABLE_TH1_DOCS
175 TCC = $(TCC) /DFOSSIL_ENABLE_TH1_DOCS=1
176 RCC = $(RCC) /DFOSSIL_ENABLE_TH1_DOCS=1
177 !endif
178
--- win/fossil.rc
+++ win/fossil.rc
@@ -115,10 +115,15 @@
115115
VALUE "CommandLineIsUnicode", "Yes\0"
116116
#endif /* defined(BROKEN_MINGW_CMDLINE) */
117117
#if defined(FOSSIL_ENABLE_SSL)
118118
VALUE "SslEnabled", "Yes, " OPENSSL_VERSION_TEXT "\0"
119119
#endif /* defined(FOSSIL_ENABLE_SSL) */
120
+#if defined(FOSSIL_ENABLE_LEGACY_MV_RM)
121
+ VALUE "LegacyMvRm", "Yes\0"
122
+#else
123
+ VALUE "LegacyMvRm", "No\0"
124
+#endif /* defined(FOSSIL_ENABLE_LEGACY_MV_RM) */
120125
#if defined(FOSSIL_ENABLE_TH1_DOCS)
121126
VALUE "Th1Docs", "Yes\0"
122127
#else
123128
VALUE "Th1Docs", "No\0"
124129
#endif /* defined(FOSSIL_ENABLE_TH1_DOCS) */
125130
--- win/fossil.rc
+++ win/fossil.rc
@@ -115,10 +115,15 @@
115 VALUE "CommandLineIsUnicode", "Yes\0"
116 #endif /* defined(BROKEN_MINGW_CMDLINE) */
117 #if defined(FOSSIL_ENABLE_SSL)
118 VALUE "SslEnabled", "Yes, " OPENSSL_VERSION_TEXT "\0"
119 #endif /* defined(FOSSIL_ENABLE_SSL) */
 
 
 
 
 
120 #if defined(FOSSIL_ENABLE_TH1_DOCS)
121 VALUE "Th1Docs", "Yes\0"
122 #else
123 VALUE "Th1Docs", "No\0"
124 #endif /* defined(FOSSIL_ENABLE_TH1_DOCS) */
125
--- win/fossil.rc
+++ win/fossil.rc
@@ -115,10 +115,15 @@
115 VALUE "CommandLineIsUnicode", "Yes\0"
116 #endif /* defined(BROKEN_MINGW_CMDLINE) */
117 #if defined(FOSSIL_ENABLE_SSL)
118 VALUE "SslEnabled", "Yes, " OPENSSL_VERSION_TEXT "\0"
119 #endif /* defined(FOSSIL_ENABLE_SSL) */
120 #if defined(FOSSIL_ENABLE_LEGACY_MV_RM)
121 VALUE "LegacyMvRm", "Yes\0"
122 #else
123 VALUE "LegacyMvRm", "No\0"
124 #endif /* defined(FOSSIL_ENABLE_LEGACY_MV_RM) */
125 #if defined(FOSSIL_ENABLE_TH1_DOCS)
126 VALUE "Th1Docs", "Yes\0"
127 #else
128 VALUE "Th1Docs", "No\0"
129 #endif /* defined(FOSSIL_ENABLE_TH1_DOCS) */
130
+1
--- www/th1.md
+++ www/th1.md
@@ -283,10 +283,11 @@
283283
284284
Returns true if the binary has the given compile-time feature enabled.
285285
The possible features are:
286286
287287
1. **ssl** -- _Support for the HTTPS transport._
288
+ 1. **legacyMvRm** -- _Support for legacy mv/rm command behavior._
288289
1. **th1Docs** -- _Support for TH1 in embedded documentation._
289290
1. **th1Hooks** -- _Support for TH1 command and web page hooks._
290291
1. **tcl** -- _Support for Tcl integration._
291292
1. **useTclStubs** -- _Tcl stubs enabled in the Tcl headers._
292293
1. **tclStubs** -- _Uses Tcl stubs (i.e. linking with stubs library)._
293294
--- www/th1.md
+++ www/th1.md
@@ -283,10 +283,11 @@
283
284 Returns true if the binary has the given compile-time feature enabled.
285 The possible features are:
286
287 1. **ssl** -- _Support for the HTTPS transport._
 
288 1. **th1Docs** -- _Support for TH1 in embedded documentation._
289 1. **th1Hooks** -- _Support for TH1 command and web page hooks._
290 1. **tcl** -- _Support for Tcl integration._
291 1. **useTclStubs** -- _Tcl stubs enabled in the Tcl headers._
292 1. **tclStubs** -- _Uses Tcl stubs (i.e. linking with stubs library)._
293
--- www/th1.md
+++ www/th1.md
@@ -283,10 +283,11 @@
283
284 Returns true if the binary has the given compile-time feature enabled.
285 The possible features are:
286
287 1. **ssl** -- _Support for the HTTPS transport._
288 1. **legacyMvRm** -- _Support for legacy mv/rm command behavior._
289 1. **th1Docs** -- _Support for TH1 in embedded documentation._
290 1. **th1Hooks** -- _Support for TH1 command and web page hooks._
291 1. **tcl** -- _Support for Tcl integration._
292 1. **useTclStubs** -- _Tcl stubs enabled in the Tcl headers._
293 1. **tclStubs** -- _Uses Tcl stubs (i.e. linking with stubs library)._
294

Keyboard Shortcuts

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