Fossil SCM

Merge trunk. Make sure that "fossil forget" and "fossil rename" are unaffected by any setting. (I'm not sure this is the way to go .....)

jan.nijtmans 2015-03-09 14:45 mvAndRmFiles merge
Commit 0701c1a3f5b583e3fc11add5a90728b49b8b12a3
+9 -5
--- src/add.c
+++ src/add.c
@@ -413,14 +413,14 @@
413413
}
414414
}
415415
416416
/*
417417
** COMMAND: rm
418
-** COMMAND: delete*
418
+** COMMAND: delete
419
+** COMMAND: forget*
419420
**
420
-** Usage: %fossil rm FILE1 ?FILE2 ...?
421
-** or: %fossil delete FILE1 ?FILE2 ...?
421
+** Usage: %fossil rm|delete|forget FILE1 ?FILE2 ...?
422422
**
423423
** Remove one or more files or directories from the repository.
424424
**
425425
** This command does NOT remove the files from disk. It just marks the
426426
** files as no longer being part of the project. In other words, future
@@ -451,11 +451,13 @@
451451
/* We should be done with options.. */
452452
verify_all_options();
453453
454454
db_must_be_within_tree();
455455
db_begin_transaction();
456
- if( zMetadataOnly ){
456
+ if(g.argv[1][0]=='f'){
457
+ removeFiles = 0;
458
+ }else if( zMetadataOnly ){
457459
removeFiles = is_false(zMetadataOnly);
458460
}else{
459461
#if FOSSIL_ENABLE_LEGACY_MV_RM
460462
removeFiles = db_get_boolean("remove-files",0);
461463
#else
@@ -814,11 +816,13 @@
814816
if( g.argc<4 ){
815817
usage("OLDNAME NEWNAME");
816818
}
817819
zDest = g.argv[g.argc-1];
818820
db_begin_transaction();
819
- if( zMetadataOnly ){
821
+ if(g.argv[1][0]=='r'){
822
+ moveFiles = 0;
823
+ }else if( zMetadataOnly ){
820824
moveFiles = is_false(zMetadataOnly);
821825
}else{
822826
#if FOSSIL_ENABLE_LEGACY_MV_RM
823827
moveFiles = db_get_boolean("move-files",0);
824828
#else
825829
--- src/add.c
+++ src/add.c
@@ -413,14 +413,14 @@
413 }
414 }
415
416 /*
417 ** COMMAND: rm
418 ** COMMAND: delete*
 
419 **
420 ** Usage: %fossil rm FILE1 ?FILE2 ...?
421 ** or: %fossil delete FILE1 ?FILE2 ...?
422 **
423 ** Remove one or more files or directories from the repository.
424 **
425 ** This command does NOT remove the files from disk. It just marks the
426 ** files as no longer being part of the project. In other words, future
@@ -451,11 +451,13 @@
451 /* We should be done with options.. */
452 verify_all_options();
453
454 db_must_be_within_tree();
455 db_begin_transaction();
456 if( zMetadataOnly ){
 
 
457 removeFiles = is_false(zMetadataOnly);
458 }else{
459 #if FOSSIL_ENABLE_LEGACY_MV_RM
460 removeFiles = db_get_boolean("remove-files",0);
461 #else
@@ -814,11 +816,13 @@
814 if( g.argc<4 ){
815 usage("OLDNAME NEWNAME");
816 }
817 zDest = g.argv[g.argc-1];
818 db_begin_transaction();
819 if( zMetadataOnly ){
 
 
820 moveFiles = is_false(zMetadataOnly);
821 }else{
822 #if FOSSIL_ENABLE_LEGACY_MV_RM
823 moveFiles = db_get_boolean("move-files",0);
824 #else
825
--- src/add.c
+++ src/add.c
@@ -413,14 +413,14 @@
413 }
414 }
415
416 /*
417 ** COMMAND: rm
418 ** COMMAND: delete
419 ** COMMAND: forget*
420 **
421 ** Usage: %fossil rm|delete|forget FILE1 ?FILE2 ...?
 
422 **
423 ** Remove one or more files or directories from the repository.
424 **
425 ** This command does NOT remove the files from disk. It just marks the
426 ** files as no longer being part of the project. In other words, future
@@ -451,11 +451,13 @@
451 /* We should be done with options.. */
452 verify_all_options();
453
454 db_must_be_within_tree();
455 db_begin_transaction();
456 if(g.argv[1][0]=='f'){
457 removeFiles = 0;
458 }else if( zMetadataOnly ){
459 removeFiles = is_false(zMetadataOnly);
460 }else{
461 #if FOSSIL_ENABLE_LEGACY_MV_RM
462 removeFiles = db_get_boolean("remove-files",0);
463 #else
@@ -814,11 +816,13 @@
816 if( g.argc<4 ){
817 usage("OLDNAME NEWNAME");
818 }
819 zDest = g.argv[g.argc-1];
820 db_begin_transaction();
821 if(g.argv[1][0]=='r'){
822 moveFiles = 0;
823 }else if( zMetadataOnly ){
824 moveFiles = is_false(zMetadataOnly);
825 }else{
826 #if FOSSIL_ENABLE_LEGACY_MV_RM
827 moveFiles = db_get_boolean("move-files",0);
828 #else
829
+9 -5
--- src/add.c
+++ src/add.c
@@ -413,14 +413,14 @@
413413
}
414414
}
415415
416416
/*
417417
** COMMAND: rm
418
-** COMMAND: delete*
418
+** COMMAND: delete
419
+** COMMAND: forget*
419420
**
420
-** Usage: %fossil rm FILE1 ?FILE2 ...?
421
-** or: %fossil delete FILE1 ?FILE2 ...?
421
+** Usage: %fossil rm|delete|forget FILE1 ?FILE2 ...?
422422
**
423423
** Remove one or more files or directories from the repository.
424424
**
425425
** This command does NOT remove the files from disk. It just marks the
426426
** files as no longer being part of the project. In other words, future
@@ -451,11 +451,13 @@
451451
/* We should be done with options.. */
452452
verify_all_options();
453453
454454
db_must_be_within_tree();
455455
db_begin_transaction();
456
- if( zMetadataOnly ){
456
+ if(g.argv[1][0]=='f'){
457
+ removeFiles = 0;
458
+ }else if( zMetadataOnly ){
457459
removeFiles = is_false(zMetadataOnly);
458460
}else{
459461
#if FOSSIL_ENABLE_LEGACY_MV_RM
460462
removeFiles = db_get_boolean("remove-files",0);
461463
#else
@@ -814,11 +816,13 @@
814816
if( g.argc<4 ){
815817
usage("OLDNAME NEWNAME");
816818
}
817819
zDest = g.argv[g.argc-1];
818820
db_begin_transaction();
819
- if( zMetadataOnly ){
821
+ if(g.argv[1][0]=='r'){
822
+ moveFiles = 0;
823
+ }else if( zMetadataOnly ){
820824
moveFiles = is_false(zMetadataOnly);
821825
}else{
822826
#if FOSSIL_ENABLE_LEGACY_MV_RM
823827
moveFiles = db_get_boolean("move-files",0);
824828
#else
825829
--- src/add.c
+++ src/add.c
@@ -413,14 +413,14 @@
413 }
414 }
415
416 /*
417 ** COMMAND: rm
418 ** COMMAND: delete*
 
419 **
420 ** Usage: %fossil rm FILE1 ?FILE2 ...?
421 ** or: %fossil delete FILE1 ?FILE2 ...?
422 **
423 ** Remove one or more files or directories from the repository.
424 **
425 ** This command does NOT remove the files from disk. It just marks the
426 ** files as no longer being part of the project. In other words, future
@@ -451,11 +451,13 @@
451 /* We should be done with options.. */
452 verify_all_options();
453
454 db_must_be_within_tree();
455 db_begin_transaction();
456 if( zMetadataOnly ){
 
 
457 removeFiles = is_false(zMetadataOnly);
458 }else{
459 #if FOSSIL_ENABLE_LEGACY_MV_RM
460 removeFiles = db_get_boolean("remove-files",0);
461 #else
@@ -814,11 +816,13 @@
814 if( g.argc<4 ){
815 usage("OLDNAME NEWNAME");
816 }
817 zDest = g.argv[g.argc-1];
818 db_begin_transaction();
819 if( zMetadataOnly ){
 
 
820 moveFiles = is_false(zMetadataOnly);
821 }else{
822 #if FOSSIL_ENABLE_LEGACY_MV_RM
823 moveFiles = db_get_boolean("move-files",0);
824 #else
825
--- src/add.c
+++ src/add.c
@@ -413,14 +413,14 @@
413 }
414 }
415
416 /*
417 ** COMMAND: rm
418 ** COMMAND: delete
419 ** COMMAND: forget*
420 **
421 ** Usage: %fossil rm|delete|forget FILE1 ?FILE2 ...?
 
422 **
423 ** Remove one or more files or directories from the repository.
424 **
425 ** This command does NOT remove the files from disk. It just marks the
426 ** files as no longer being part of the project. In other words, future
@@ -451,11 +451,13 @@
451 /* We should be done with options.. */
452 verify_all_options();
453
454 db_must_be_within_tree();
455 db_begin_transaction();
456 if(g.argv[1][0]=='f'){
457 removeFiles = 0;
458 }else if( zMetadataOnly ){
459 removeFiles = is_false(zMetadataOnly);
460 }else{
461 #if FOSSIL_ENABLE_LEGACY_MV_RM
462 removeFiles = db_get_boolean("remove-files",0);
463 #else
@@ -814,11 +816,13 @@
816 if( g.argc<4 ){
817 usage("OLDNAME NEWNAME");
818 }
819 zDest = g.argv[g.argc-1];
820 db_begin_transaction();
821 if(g.argv[1][0]=='r'){
822 moveFiles = 0;
823 }else if( zMetadataOnly ){
824 moveFiles = is_false(zMetadataOnly);
825 }else{
826 #if FOSSIL_ENABLE_LEGACY_MV_RM
827 moveFiles = db_get_boolean("move-files",0);
828 #else
829
+1 -1
--- src/branch.c
+++ src/branch.c
@@ -159,11 +159,11 @@
159159
fossil_fatal("%s\n", g.zErrMsg);
160160
}
161161
assert( blob_is_reset(&branch) );
162162
content_deltify(rootid, brid, 0);
163163
zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", brid);
164
- fossil_print("New branch: %S\n", zUuid);
164
+ fossil_print("New branch: %s\n", zUuid);
165165
if( g.argc==3 ){
166166
fossil_print(
167167
"\n"
168168
"Note: the local check-out has not been updated to the new\n"
169169
" branch. To begin working on the new branch, do this:\n"
170170
--- src/branch.c
+++ src/branch.c
@@ -159,11 +159,11 @@
159 fossil_fatal("%s\n", g.zErrMsg);
160 }
161 assert( blob_is_reset(&branch) );
162 content_deltify(rootid, brid, 0);
163 zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", brid);
164 fossil_print("New branch: %S\n", zUuid);
165 if( g.argc==3 ){
166 fossil_print(
167 "\n"
168 "Note: the local check-out has not been updated to the new\n"
169 " branch. To begin working on the new branch, do this:\n"
170
--- src/branch.c
+++ src/branch.c
@@ -159,11 +159,11 @@
159 fossil_fatal("%s\n", g.zErrMsg);
160 }
161 assert( blob_is_reset(&branch) );
162 content_deltify(rootid, brid, 0);
163 zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", brid);
164 fossil_print("New branch: %s\n", zUuid);
165 if( g.argc==3 ){
166 fossil_print(
167 "\n"
168 "Note: the local check-out has not been updated to the new\n"
169 " branch. To begin working on the new branch, do this:\n"
170
+8 -6
--- src/bundle.c
+++ src/bundle.c
@@ -28,11 +28,11 @@
2828
** If an integer, then the corresponding blobid is the delta basis.
2929
** If a text string, then that string is a SHA1 hash for the delta
3030
** basis, which is presumably in the master repository. If NULL, then
3131
** data contains contain without delta compression.
3232
*/
33
-static const char zBundleInit[] =
33
+static const char zBundleInit[] =
3434
@ CREATE TABLE IF NOT EXISTS "%w".bconfig(
3535
@ bcname TEXT,
3636
@ bcvalue ANY
3737
@ );
3838
@ CREATE TABLE IF NOT EXISTS "%w".bblob(
@@ -155,11 +155,11 @@
155155
int i;
156156
Stmt q;
157157
158158
verify_all_options();
159159
bundle_attach_file(g.argv[3], "b1", 1);
160
- db_prepare(&q,
160
+ db_prepare(&q,
161161
"INSERT INTO bblob(blobid, uuid, sz, delta, data, notes) "
162162
"VALUES(NULL, $uuid, $sz, NULL, $data, $filename)");
163163
db_begin_transaction();
164164
for(i=4; i<g.argc; i++){
165165
int sz;
@@ -188,11 +188,11 @@
188188
** instance of BRANCHNAME
189189
** --from TAG1 [--to TAG2] Check-in TAG1 and all primary descendants
190190
** up to and including TAG2
191191
** --checkin TAG Check-in TAG only
192192
**
193
-** Store the RIDs for all applicable check-ins in the zTab table that
193
+** Store the RIDs for all applicable check-ins in the zTab table that
194194
** should already exist. Invoke fossil_fatal() if any kind of error is
195195
** seen.
196196
*/
197197
void subtree_from_arguments(const char *zTab){
198198
const char *zBr;
@@ -431,11 +431,11 @@
431431
if( bag_find(&busy, iSrc) ){
432432
fossil_fatal("delta loop while uncompressing bundle artifacts");
433433
}
434434
bag_insert(&busy, iSrc);
435435
}
436
- db_prepare(&q,
436
+ db_prepare(&q,
437437
"SELECT uuid, data, bblob.delta, bix.blobid"
438438
" FROM bix, bblob"
439439
" WHERE bix.delta=%d"
440440
" AND bix.blobid=bblob.blobid;",
441441
iSrc
@@ -623,11 +623,11 @@
623623
);
624624
manifest_crosslink_begin();
625625
bundle_import_elements(0, 0, isPriv);
626626
manifest_crosslink_end(0);
627627
describe_artifacts_to_stdout("IN got", "Imported content:");
628
- db_end_transaction(0);
628
+ db_end_transaction(0);
629629
}
630630
631631
/* fossil bundle purge BUNDLE
632632
**
633633
** Try to undo a prior "bundle import BUNDLE".
@@ -769,11 +769,11 @@
769769
**
770770
** List the contents of BUNDLE on standard output
771771
**
772772
** fossil bundle purge BUNDLE
773773
**
774
-** Remove from the repository all files that are used exclusively
774
+** Remove from the repository all files that are used exclusively
775775
** by check-ins in BUNDLE. This has the effect of undoing a
776776
** "fossil bundle import".
777777
**
778778
** SUMMARY:
779779
** fossil bundle append BUNDLE FILE... Add files to BUNDLE
@@ -786,10 +786,12 @@
786786
** fossil bundle import BUNDLE ?OPTIONS? Import a bundle
787787
** --publish Publish the import
788788
** --force Cross-repo import
789789
** fossil bundle ls BUNDLE List content of a bundle
790790
** fossil bundle purge BUNDLE Undo an import
791
+**
792
+** See also: publish
791793
*/
792794
void bundle_cmd(void){
793795
const char *zSubcmd;
794796
int n;
795797
if( g.argc<4 ) usage("SUBCOMMAND BUNDLE ?OPTIONS?");
796798
--- src/bundle.c
+++ src/bundle.c
@@ -28,11 +28,11 @@
28 ** If an integer, then the corresponding blobid is the delta basis.
29 ** If a text string, then that string is a SHA1 hash for the delta
30 ** basis, which is presumably in the master repository. If NULL, then
31 ** data contains contain without delta compression.
32 */
33 static const char zBundleInit[] =
34 @ CREATE TABLE IF NOT EXISTS "%w".bconfig(
35 @ bcname TEXT,
36 @ bcvalue ANY
37 @ );
38 @ CREATE TABLE IF NOT EXISTS "%w".bblob(
@@ -155,11 +155,11 @@
155 int i;
156 Stmt q;
157
158 verify_all_options();
159 bundle_attach_file(g.argv[3], "b1", 1);
160 db_prepare(&q,
161 "INSERT INTO bblob(blobid, uuid, sz, delta, data, notes) "
162 "VALUES(NULL, $uuid, $sz, NULL, $data, $filename)");
163 db_begin_transaction();
164 for(i=4; i<g.argc; i++){
165 int sz;
@@ -188,11 +188,11 @@
188 ** instance of BRANCHNAME
189 ** --from TAG1 [--to TAG2] Check-in TAG1 and all primary descendants
190 ** up to and including TAG2
191 ** --checkin TAG Check-in TAG only
192 **
193 ** Store the RIDs for all applicable check-ins in the zTab table that
194 ** should already exist. Invoke fossil_fatal() if any kind of error is
195 ** seen.
196 */
197 void subtree_from_arguments(const char *zTab){
198 const char *zBr;
@@ -431,11 +431,11 @@
431 if( bag_find(&busy, iSrc) ){
432 fossil_fatal("delta loop while uncompressing bundle artifacts");
433 }
434 bag_insert(&busy, iSrc);
435 }
436 db_prepare(&q,
437 "SELECT uuid, data, bblob.delta, bix.blobid"
438 " FROM bix, bblob"
439 " WHERE bix.delta=%d"
440 " AND bix.blobid=bblob.blobid;",
441 iSrc
@@ -623,11 +623,11 @@
623 );
624 manifest_crosslink_begin();
625 bundle_import_elements(0, 0, isPriv);
626 manifest_crosslink_end(0);
627 describe_artifacts_to_stdout("IN got", "Imported content:");
628 db_end_transaction(0);
629 }
630
631 /* fossil bundle purge BUNDLE
632 **
633 ** Try to undo a prior "bundle import BUNDLE".
@@ -769,11 +769,11 @@
769 **
770 ** List the contents of BUNDLE on standard output
771 **
772 ** fossil bundle purge BUNDLE
773 **
774 ** Remove from the repository all files that are used exclusively
775 ** by check-ins in BUNDLE. This has the effect of undoing a
776 ** "fossil bundle import".
777 **
778 ** SUMMARY:
779 ** fossil bundle append BUNDLE FILE... Add files to BUNDLE
@@ -786,10 +786,12 @@
786 ** fossil bundle import BUNDLE ?OPTIONS? Import a bundle
787 ** --publish Publish the import
788 ** --force Cross-repo import
789 ** fossil bundle ls BUNDLE List content of a bundle
790 ** fossil bundle purge BUNDLE Undo an import
 
 
791 */
792 void bundle_cmd(void){
793 const char *zSubcmd;
794 int n;
795 if( g.argc<4 ) usage("SUBCOMMAND BUNDLE ?OPTIONS?");
796
--- src/bundle.c
+++ src/bundle.c
@@ -28,11 +28,11 @@
28 ** If an integer, then the corresponding blobid is the delta basis.
29 ** If a text string, then that string is a SHA1 hash for the delta
30 ** basis, which is presumably in the master repository. If NULL, then
31 ** data contains contain without delta compression.
32 */
33 static const char zBundleInit[] =
34 @ CREATE TABLE IF NOT EXISTS "%w".bconfig(
35 @ bcname TEXT,
36 @ bcvalue ANY
37 @ );
38 @ CREATE TABLE IF NOT EXISTS "%w".bblob(
@@ -155,11 +155,11 @@
155 int i;
156 Stmt q;
157
158 verify_all_options();
159 bundle_attach_file(g.argv[3], "b1", 1);
160 db_prepare(&q,
161 "INSERT INTO bblob(blobid, uuid, sz, delta, data, notes) "
162 "VALUES(NULL, $uuid, $sz, NULL, $data, $filename)");
163 db_begin_transaction();
164 for(i=4; i<g.argc; i++){
165 int sz;
@@ -188,11 +188,11 @@
188 ** instance of BRANCHNAME
189 ** --from TAG1 [--to TAG2] Check-in TAG1 and all primary descendants
190 ** up to and including TAG2
191 ** --checkin TAG Check-in TAG only
192 **
193 ** Store the RIDs for all applicable check-ins in the zTab table that
194 ** should already exist. Invoke fossil_fatal() if any kind of error is
195 ** seen.
196 */
197 void subtree_from_arguments(const char *zTab){
198 const char *zBr;
@@ -431,11 +431,11 @@
431 if( bag_find(&busy, iSrc) ){
432 fossil_fatal("delta loop while uncompressing bundle artifacts");
433 }
434 bag_insert(&busy, iSrc);
435 }
436 db_prepare(&q,
437 "SELECT uuid, data, bblob.delta, bix.blobid"
438 " FROM bix, bblob"
439 " WHERE bix.delta=%d"
440 " AND bix.blobid=bblob.blobid;",
441 iSrc
@@ -623,11 +623,11 @@
623 );
624 manifest_crosslink_begin();
625 bundle_import_elements(0, 0, isPriv);
626 manifest_crosslink_end(0);
627 describe_artifacts_to_stdout("IN got", "Imported content:");
628 db_end_transaction(0);
629 }
630
631 /* fossil bundle purge BUNDLE
632 **
633 ** Try to undo a prior "bundle import BUNDLE".
@@ -769,11 +769,11 @@
769 **
770 ** List the contents of BUNDLE on standard output
771 **
772 ** fossil bundle purge BUNDLE
773 **
774 ** Remove from the repository all files that are used exclusively
775 ** by check-ins in BUNDLE. This has the effect of undoing a
776 ** "fossil bundle import".
777 **
778 ** SUMMARY:
779 ** fossil bundle append BUNDLE FILE... Add files to BUNDLE
@@ -786,10 +786,12 @@
786 ** fossil bundle import BUNDLE ?OPTIONS? Import a bundle
787 ** --publish Publish the import
788 ** --force Cross-repo import
789 ** fossil bundle ls BUNDLE List content of a bundle
790 ** fossil bundle purge BUNDLE Undo an import
791 **
792 ** See also: publish
793 */
794 void bundle_cmd(void){
795 const char *zSubcmd;
796 int n;
797 if( g.argc<4 ) usage("SUBCOMMAND BUNDLE ?OPTIONS?");
798
+3 -3
--- src/checkin.c
+++ src/checkin.c
@@ -1936,18 +1936,18 @@
19361936
db_prepare(&q, "SELECT uuid,merge FROM vmerge JOIN blob ON merge=rid"
19371937
" WHERE id=-4");
19381938
while( db_step(&q)==SQLITE_ROW ){
19391939
const char *zIntegrateUuid = db_column_text(&q, 0);
19401940
if( is_a_leaf(db_column_int(&q, 1)) ){
1941
- fossil_print("Closed: %S\n", zIntegrateUuid);
1941
+ fossil_print("Closed: %s\n", zIntegrateUuid);
19421942
}else{
1943
- fossil_print("Not_Closed: %S (not a leaf any more)\n", zIntegrateUuid);
1943
+ fossil_print("Not_Closed: %s (not a leaf any more)\n", zIntegrateUuid);
19441944
}
19451945
}
19461946
db_finalize(&q);
19471947
1948
- fossil_print("New_Version: %S\n", zUuid);
1948
+ fossil_print("New_Version: %s\n", zUuid);
19491949
if( outputManifest ){
19501950
zManifestFile = mprintf("%smanifest.uuid", g.zLocalRoot);
19511951
blob_zero(&muuid);
19521952
blob_appendf(&muuid, "%s\n", zUuid);
19531953
blob_write_to_file(&muuid, zManifestFile);
19541954
--- src/checkin.c
+++ src/checkin.c
@@ -1936,18 +1936,18 @@
1936 db_prepare(&q, "SELECT uuid,merge FROM vmerge JOIN blob ON merge=rid"
1937 " WHERE id=-4");
1938 while( db_step(&q)==SQLITE_ROW ){
1939 const char *zIntegrateUuid = db_column_text(&q, 0);
1940 if( is_a_leaf(db_column_int(&q, 1)) ){
1941 fossil_print("Closed: %S\n", zIntegrateUuid);
1942 }else{
1943 fossil_print("Not_Closed: %S (not a leaf any more)\n", zIntegrateUuid);
1944 }
1945 }
1946 db_finalize(&q);
1947
1948 fossil_print("New_Version: %S\n", zUuid);
1949 if( outputManifest ){
1950 zManifestFile = mprintf("%smanifest.uuid", g.zLocalRoot);
1951 blob_zero(&muuid);
1952 blob_appendf(&muuid, "%s\n", zUuid);
1953 blob_write_to_file(&muuid, zManifestFile);
1954
--- src/checkin.c
+++ src/checkin.c
@@ -1936,18 +1936,18 @@
1936 db_prepare(&q, "SELECT uuid,merge FROM vmerge JOIN blob ON merge=rid"
1937 " WHERE id=-4");
1938 while( db_step(&q)==SQLITE_ROW ){
1939 const char *zIntegrateUuid = db_column_text(&q, 0);
1940 if( is_a_leaf(db_column_int(&q, 1)) ){
1941 fossil_print("Closed: %s\n", zIntegrateUuid);
1942 }else{
1943 fossil_print("Not_Closed: %s (not a leaf any more)\n", zIntegrateUuid);
1944 }
1945 }
1946 db_finalize(&q);
1947
1948 fossil_print("New_Version: %s\n", zUuid);
1949 if( outputManifest ){
1950 zManifestFile = mprintf("%smanifest.uuid", g.zLocalRoot);
1951 blob_zero(&muuid);
1952 blob_appendf(&muuid, "%s\n", zUuid);
1953 blob_write_to_file(&muuid, zManifestFile);
1954
+5 -1
--- src/finfo.c
+++ src/finfo.c
@@ -43,11 +43,12 @@
4343
** Options:
4444
** -b|--brief display a brief (one line / revision) summary
4545
** --case-sensitive B Enable or disable case-sensitive filenames. B is a
4646
** boolean: "yes", "no", "true", "false", etc.
4747
** -l|--log select log mode (the default)
48
-** -n|--limit N display the first N changes. N=0 means no limit.
48
+** -n|--limit N Display the first N changes (default unlimited).
49
+** N<=0 means no limit.
4950
** --offset P skip P changes
5051
** -p|--print select print mode
5152
** -r|--revision R print the given revision (or ckout, if none is given)
5253
** to stdout (only in print mode)
5354
** -s|--status select status mode (print a status indicator for FILE)
@@ -155,10 +156,13 @@
155156
zWidth = find_option("width","W",1);
156157
iLimit = zLimit ? atoi(zLimit) : -1;
157158
zOffset = find_option("offset",0,1);
158159
iOffset = zOffset ? atoi(zOffset) : 0;
159160
iBrief = (find_option("brief","b",0) == 0);
161
+ if( iLimit==0 ){
162
+ iLimit = -1;
163
+ }
160164
if( zWidth ){
161165
iWidth = atoi(zWidth);
162166
if( (iWidth!=0) && (iWidth<=22) ){
163167
fossil_fatal("-W|--width value must be >22 or 0");
164168
}
165169
--- src/finfo.c
+++ src/finfo.c
@@ -43,11 +43,12 @@
43 ** Options:
44 ** -b|--brief display a brief (one line / revision) summary
45 ** --case-sensitive B Enable or disable case-sensitive filenames. B is a
46 ** boolean: "yes", "no", "true", "false", etc.
47 ** -l|--log select log mode (the default)
48 ** -n|--limit N display the first N changes. N=0 means no limit.
 
49 ** --offset P skip P changes
50 ** -p|--print select print mode
51 ** -r|--revision R print the given revision (or ckout, if none is given)
52 ** to stdout (only in print mode)
53 ** -s|--status select status mode (print a status indicator for FILE)
@@ -155,10 +156,13 @@
155 zWidth = find_option("width","W",1);
156 iLimit = zLimit ? atoi(zLimit) : -1;
157 zOffset = find_option("offset",0,1);
158 iOffset = zOffset ? atoi(zOffset) : 0;
159 iBrief = (find_option("brief","b",0) == 0);
 
 
 
160 if( zWidth ){
161 iWidth = atoi(zWidth);
162 if( (iWidth!=0) && (iWidth<=22) ){
163 fossil_fatal("-W|--width value must be >22 or 0");
164 }
165
--- src/finfo.c
+++ src/finfo.c
@@ -43,11 +43,12 @@
43 ** Options:
44 ** -b|--brief display a brief (one line / revision) summary
45 ** --case-sensitive B Enable or disable case-sensitive filenames. B is a
46 ** boolean: "yes", "no", "true", "false", etc.
47 ** -l|--log select log mode (the default)
48 ** -n|--limit N Display the first N changes (default unlimited).
49 ** N<=0 means no limit.
50 ** --offset P skip P changes
51 ** -p|--print select print mode
52 ** -r|--revision R print the given revision (or ckout, if none is given)
53 ** to stdout (only in print mode)
54 ** -s|--status select status mode (print a status indicator for FILE)
@@ -155,10 +156,13 @@
156 zWidth = find_option("width","W",1);
157 iLimit = zLimit ? atoi(zLimit) : -1;
158 zOffset = find_option("offset",0,1);
159 iOffset = zOffset ? atoi(zOffset) : 0;
160 iBrief = (find_option("brief","b",0) == 0);
161 if( iLimit==0 ){
162 iLimit = -1;
163 }
164 if( zWidth ){
165 iWidth = atoi(zWidth);
166 if( (iWidth!=0) && (iWidth<=22) ){
167 fossil_fatal("-W|--width value must be >22 or 0");
168 }
169
+1 -1
--- src/foci.c
+++ src/foci.c
@@ -24,11 +24,11 @@
2424
**
2525
** CREATE VIRTUAL TABLE temp.foci USING files_of_checkin;
2626
** -- ^^^^--- important!
2727
** SELECT * FROM foci WHERE checkinID=symbolic_name_to_rid('trunk');
2828
**
29
-** The symbolic_name_to_rid('trunk') function finds the BLOB.RID value
29
+** The symbolic_name_to_rid('trunk') function finds the BLOB.RID value
3030
** corresponding to the 'trunk' tag. Then the files_of_checkin virtual table
3131
** decodes the manifest defined by that BLOB and returns all files described
3232
** by that manifest. The "schema" for the temp.foci table is:
3333
**
3434
** CREATE TABLE files_of_checkin(
3535
--- src/foci.c
+++ src/foci.c
@@ -24,11 +24,11 @@
24 **
25 ** CREATE VIRTUAL TABLE temp.foci USING files_of_checkin;
26 ** -- ^^^^--- important!
27 ** SELECT * FROM foci WHERE checkinID=symbolic_name_to_rid('trunk');
28 **
29 ** The symbolic_name_to_rid('trunk') function finds the BLOB.RID value
30 ** corresponding to the 'trunk' tag. Then the files_of_checkin virtual table
31 ** decodes the manifest defined by that BLOB and returns all files described
32 ** by that manifest. The "schema" for the temp.foci table is:
33 **
34 ** CREATE TABLE files_of_checkin(
35
--- src/foci.c
+++ src/foci.c
@@ -24,11 +24,11 @@
24 **
25 ** CREATE VIRTUAL TABLE temp.foci USING files_of_checkin;
26 ** -- ^^^^--- important!
27 ** SELECT * FROM foci WHERE checkinID=symbolic_name_to_rid('trunk');
28 **
29 ** The symbolic_name_to_rid('trunk') function finds the BLOB.RID value
30 ** corresponding to the 'trunk' tag. Then the files_of_checkin virtual table
31 ** decodes the manifest defined by that BLOB and returns all files described
32 ** by that manifest. The "schema" for the temp.foci table is:
33 **
34 ** CREATE TABLE files_of_checkin(
35
+38 -10
--- src/info.c
+++ src/info.c
@@ -1701,35 +1701,62 @@
17011701
** file. This routine appends that text to the HTTP reply with line numbering.
17021702
**
17031703
** zLn is the ?ln= parameter for the HTTP query. If there is an argument,
17041704
** then highlight that line number and scroll to it once the page loads.
17051705
** If there are two line numbers, highlight the range of lines.
1706
+** Multiple ranges can be highlighed by adding additional line numbers
1707
+** separated by a non-digit character (also not one of [-,.]).
17061708
*/
17071709
void output_text_with_line_numbers(
17081710
const char *z,
17091711
const char *zLn
17101712
){
17111713
int iStart, iEnd; /* Start and end of region to highlight */
17121714
int n = 0; /* Current line number */
1713
- int i; /* Loop index */
1715
+ int i = 0; /* Loop index */
17141716
int iTop = 0; /* Scroll so that this line is on top of screen. */
1717
+ Stmt q;
17151718
17161719
iStart = iEnd = atoi(zLn);
1720
+ db_multi_exec(
1721
+ "CREATE TEMP TABLE lnos(iStart INTEGER PRIMARY KEY, iEnd INTEGER)");
17171722
if( iStart>0 ){
1718
- for(i=0; fossil_isdigit(zLn[i]); i++){}
1719
- if( zLn[i]==',' || zLn[i]=='-' || zLn[i]=='.' ){
1720
- i++;
1721
- while( zLn[i]=='.' ){ i++; }
1722
- iEnd = atoi(&zLn[i]);
1723
- }
1724
- if( iEnd<iStart ) iEnd = iStart;
1723
+ do{
1724
+ while( fossil_isdigit(zLn[i]) ) i++;
1725
+ if( zLn[i]==',' || zLn[i]=='-' || zLn[i]=='.' ){
1726
+ i++;
1727
+ while( zLn[i]=='.' ){ i++; }
1728
+ iEnd = atoi(&zLn[i]);
1729
+ while( fossil_isdigit(zLn[i]) ) i++;
1730
+ }
1731
+ while( fossil_isdigit(zLn[i]) ) i++;
1732
+ if( iEnd<iStart ) iEnd = iStart;
1733
+ db_multi_exec(
1734
+ "INSERT OR REPLACE INTO lnos VALUES(%d,%d)", iStart, iEnd
1735
+ );
1736
+ iStart = iEnd = atoi(&zLn[i++]);
1737
+ }while( zLn[i] && iStart && iEnd );
1738
+ }
1739
+ db_prepare(&q, "SELECT min(iStart), iEnd FROM lnos");
1740
+ if( db_step(&q)==SQLITE_ROW ){
1741
+ iStart = db_column_int(&q, 0);
1742
+ iEnd = db_column_int(&q, 1);
17251743
iTop = iStart - 15 + (iEnd-iStart)/4;
17261744
if( iTop>iStart - 2 ) iTop = iStart-2;
17271745
}
1746
+ db_finalize(&q);
17281747
@ <pre>
17291748
while( z[0] ){
17301749
n++;
1750
+ db_prepare(&q,
1751
+ "SELECT min(iStart), max(iEnd) FROM lnos"
1752
+ " WHERE iStart <= %d AND iEnd >= %d", n, n);
1753
+ if( db_step(&q)==SQLITE_ROW ){
1754
+ iStart = db_column_int(&q, 0);
1755
+ iEnd = db_column_int(&q, 1);
1756
+ }
1757
+ db_finalize(&q);
17311758
for(i=0; z[i] && z[i]!='\n'; i++){}
17321759
if( n==iTop ) cgi_append_content("<span id=\"topln\">", -1);
17331760
if( n==iStart ){
17341761
cgi_append_content("<div class=\"selectedText\">",-1);
17351762
}
@@ -1737,19 +1764,19 @@
17371764
if( i>0 ){
17381765
char *zHtml = htmlize(z, i);
17391766
cgi_append_content(zHtml, -1);
17401767
fossil_free(zHtml);
17411768
}
1742
- if( n==iStart-15 ) cgi_append_content("</span>", -1);
1769
+ if( n==iTop ) cgi_append_content("</span>", -1);
17431770
if( n==iEnd ) cgi_append_content("</div>", -1);
17441771
else cgi_append_content("\n", 1);
17451772
z += i;
17461773
if( z[0]=='\n' ) z++;
17471774
}
17481775
if( n<iEnd ) cgi_printf("</div>");
17491776
@ </pre>
1750
- if( iStart ){
1777
+ if( db_int(0, "SELECT EXISTS(SELECT 1 FROM lnos)") ){
17511778
@ <script>gebi('topln').scrollIntoView(true);</script>
17521779
}
17531780
}
17541781
17551782
@@ -1764,10 +1791,11 @@
17641791
** Additional query parameters:
17651792
**
17661793
** ln - show line numbers
17671794
** ln=N - highlight line number N
17681795
** ln=M-N - highlight lines M through N inclusive
1796
+** ln=M-N+Y-Z - higllight lines M through N and Y through Z (inclusive)
17691797
** verbose - show more detail in the description
17701798
**
17711799
** The /artifact page show the complete content of a file
17721800
** identified by SHA1HASH as preformatted text. The
17731801
** /whatis page shows only a description of the file.
17741802
--- src/info.c
+++ src/info.c
@@ -1701,35 +1701,62 @@
1701 ** file. This routine appends that text to the HTTP reply with line numbering.
1702 **
1703 ** zLn is the ?ln= parameter for the HTTP query. If there is an argument,
1704 ** then highlight that line number and scroll to it once the page loads.
1705 ** If there are two line numbers, highlight the range of lines.
 
 
1706 */
1707 void output_text_with_line_numbers(
1708 const char *z,
1709 const char *zLn
1710 ){
1711 int iStart, iEnd; /* Start and end of region to highlight */
1712 int n = 0; /* Current line number */
1713 int i; /* Loop index */
1714 int iTop = 0; /* Scroll so that this line is on top of screen. */
 
1715
1716 iStart = iEnd = atoi(zLn);
 
 
1717 if( iStart>0 ){
1718 for(i=0; fossil_isdigit(zLn[i]); i++){}
1719 if( zLn[i]==',' || zLn[i]=='-' || zLn[i]=='.' ){
1720 i++;
1721 while( zLn[i]=='.' ){ i++; }
1722 iEnd = atoi(&zLn[i]);
1723 }
1724 if( iEnd<iStart ) iEnd = iStart;
 
 
 
 
 
 
 
 
 
 
 
 
 
1725 iTop = iStart - 15 + (iEnd-iStart)/4;
1726 if( iTop>iStart - 2 ) iTop = iStart-2;
1727 }
 
1728 @ <pre>
1729 while( z[0] ){
1730 n++;
 
 
 
 
 
 
 
 
1731 for(i=0; z[i] && z[i]!='\n'; i++){}
1732 if( n==iTop ) cgi_append_content("<span id=\"topln\">", -1);
1733 if( n==iStart ){
1734 cgi_append_content("<div class=\"selectedText\">",-1);
1735 }
@@ -1737,19 +1764,19 @@
1737 if( i>0 ){
1738 char *zHtml = htmlize(z, i);
1739 cgi_append_content(zHtml, -1);
1740 fossil_free(zHtml);
1741 }
1742 if( n==iStart-15 ) cgi_append_content("</span>", -1);
1743 if( n==iEnd ) cgi_append_content("</div>", -1);
1744 else cgi_append_content("\n", 1);
1745 z += i;
1746 if( z[0]=='\n' ) z++;
1747 }
1748 if( n<iEnd ) cgi_printf("</div>");
1749 @ </pre>
1750 if( iStart ){
1751 @ <script>gebi('topln').scrollIntoView(true);</script>
1752 }
1753 }
1754
1755
@@ -1764,10 +1791,11 @@
1764 ** Additional query parameters:
1765 **
1766 ** ln - show line numbers
1767 ** ln=N - highlight line number N
1768 ** ln=M-N - highlight lines M through N inclusive
 
1769 ** verbose - show more detail in the description
1770 **
1771 ** The /artifact page show the complete content of a file
1772 ** identified by SHA1HASH as preformatted text. The
1773 ** /whatis page shows only a description of the file.
1774
--- src/info.c
+++ src/info.c
@@ -1701,35 +1701,62 @@
1701 ** file. This routine appends that text to the HTTP reply with line numbering.
1702 **
1703 ** zLn is the ?ln= parameter for the HTTP query. If there is an argument,
1704 ** then highlight that line number and scroll to it once the page loads.
1705 ** If there are two line numbers, highlight the range of lines.
1706 ** Multiple ranges can be highlighed by adding additional line numbers
1707 ** separated by a non-digit character (also not one of [-,.]).
1708 */
1709 void output_text_with_line_numbers(
1710 const char *z,
1711 const char *zLn
1712 ){
1713 int iStart, iEnd; /* Start and end of region to highlight */
1714 int n = 0; /* Current line number */
1715 int i = 0; /* Loop index */
1716 int iTop = 0; /* Scroll so that this line is on top of screen. */
1717 Stmt q;
1718
1719 iStart = iEnd = atoi(zLn);
1720 db_multi_exec(
1721 "CREATE TEMP TABLE lnos(iStart INTEGER PRIMARY KEY, iEnd INTEGER)");
1722 if( iStart>0 ){
1723 do{
1724 while( fossil_isdigit(zLn[i]) ) i++;
1725 if( zLn[i]==',' || zLn[i]=='-' || zLn[i]=='.' ){
1726 i++;
1727 while( zLn[i]=='.' ){ i++; }
1728 iEnd = atoi(&zLn[i]);
1729 while( fossil_isdigit(zLn[i]) ) i++;
1730 }
1731 while( fossil_isdigit(zLn[i]) ) i++;
1732 if( iEnd<iStart ) iEnd = iStart;
1733 db_multi_exec(
1734 "INSERT OR REPLACE INTO lnos VALUES(%d,%d)", iStart, iEnd
1735 );
1736 iStart = iEnd = atoi(&zLn[i++]);
1737 }while( zLn[i] && iStart && iEnd );
1738 }
1739 db_prepare(&q, "SELECT min(iStart), iEnd FROM lnos");
1740 if( db_step(&q)==SQLITE_ROW ){
1741 iStart = db_column_int(&q, 0);
1742 iEnd = db_column_int(&q, 1);
1743 iTop = iStart - 15 + (iEnd-iStart)/4;
1744 if( iTop>iStart - 2 ) iTop = iStart-2;
1745 }
1746 db_finalize(&q);
1747 @ <pre>
1748 while( z[0] ){
1749 n++;
1750 db_prepare(&q,
1751 "SELECT min(iStart), max(iEnd) FROM lnos"
1752 " WHERE iStart <= %d AND iEnd >= %d", n, n);
1753 if( db_step(&q)==SQLITE_ROW ){
1754 iStart = db_column_int(&q, 0);
1755 iEnd = db_column_int(&q, 1);
1756 }
1757 db_finalize(&q);
1758 for(i=0; z[i] && z[i]!='\n'; i++){}
1759 if( n==iTop ) cgi_append_content("<span id=\"topln\">", -1);
1760 if( n==iStart ){
1761 cgi_append_content("<div class=\"selectedText\">",-1);
1762 }
@@ -1737,19 +1764,19 @@
1764 if( i>0 ){
1765 char *zHtml = htmlize(z, i);
1766 cgi_append_content(zHtml, -1);
1767 fossil_free(zHtml);
1768 }
1769 if( n==iTop ) cgi_append_content("</span>", -1);
1770 if( n==iEnd ) cgi_append_content("</div>", -1);
1771 else cgi_append_content("\n", 1);
1772 z += i;
1773 if( z[0]=='\n' ) z++;
1774 }
1775 if( n<iEnd ) cgi_printf("</div>");
1776 @ </pre>
1777 if( db_int(0, "SELECT EXISTS(SELECT 1 FROM lnos)") ){
1778 @ <script>gebi('topln').scrollIntoView(true);</script>
1779 }
1780 }
1781
1782
@@ -1764,10 +1791,11 @@
1791 ** Additional query parameters:
1792 **
1793 ** ln - show line numbers
1794 ** ln=N - highlight line number N
1795 ** ln=M-N - highlight lines M through N inclusive
1796 ** ln=M-N+Y-Z - higllight lines M through N and Y through Z (inclusive)
1797 ** verbose - show more detail in the description
1798 **
1799 ** The /artifact page show the complete content of a file
1800 ** identified by SHA1HASH as preformatted text. The
1801 ** /whatis page shows only a description of the file.
1802
+5 -5
--- src/main.c
+++ src/main.c
@@ -1050,20 +1050,20 @@
10501050
10511051
/*
10521052
** COMMAND: help
10531053
**
10541054
** Usage: %fossil help COMMAND
1055
-** or: %fossil COMMAND -help
1055
+** or: %fossil COMMAND --help
10561056
**
10571057
** Display information on how to use COMMAND. To display a list of
10581058
** available commands one of:
10591059
**
10601060
** %fossil help Show common commands
1061
-** %fossil help --a|-all Show both common and auxiliary commands
1062
-** %fossil help --t|-test Show test commands only
1063
-** %fossil help --x|-aux Show auxiliary commands only
1064
-** %fossil help --w|-www Show list of WWW pages
1061
+** %fossil help -a|--all Show both common and auxiliary commands
1062
+** %fossil help -t|--test Show test commands only
1063
+** %fossil help -x|--aux Show auxiliary commands only
1064
+** %fossil help -w|--www Show list of WWW pages
10651065
*/
10661066
void help_cmd(void){
10671067
int rc, idx, isPage = 0;
10681068
const char *z;
10691069
const char *zCmdOrPage;
10701070
--- src/main.c
+++ src/main.c
@@ -1050,20 +1050,20 @@
1050
1051 /*
1052 ** COMMAND: help
1053 **
1054 ** Usage: %fossil help COMMAND
1055 ** or: %fossil COMMAND -help
1056 **
1057 ** Display information on how to use COMMAND. To display a list of
1058 ** available commands one of:
1059 **
1060 ** %fossil help Show common commands
1061 ** %fossil help --a|-all Show both common and auxiliary commands
1062 ** %fossil help --t|-test Show test commands only
1063 ** %fossil help --x|-aux Show auxiliary commands only
1064 ** %fossil help --w|-www Show list of WWW pages
1065 */
1066 void help_cmd(void){
1067 int rc, idx, isPage = 0;
1068 const char *z;
1069 const char *zCmdOrPage;
1070
--- src/main.c
+++ src/main.c
@@ -1050,20 +1050,20 @@
1050
1051 /*
1052 ** COMMAND: help
1053 **
1054 ** Usage: %fossil help COMMAND
1055 ** or: %fossil COMMAND --help
1056 **
1057 ** Display information on how to use COMMAND. To display a list of
1058 ** available commands one of:
1059 **
1060 ** %fossil help Show common commands
1061 ** %fossil help -a|--all Show both common and auxiliary commands
1062 ** %fossil help -t|--test Show test commands only
1063 ** %fossil help -x|--aux Show auxiliary commands only
1064 ** %fossil help -w|--www Show list of WWW pages
1065 */
1066 void help_cmd(void){
1067 int rc, idx, isPage = 0;
1068 const char *z;
1069 const char *zCmdOrPage;
1070
+5 -5
--- src/main.c
+++ src/main.c
@@ -1050,20 +1050,20 @@
10501050
10511051
/*
10521052
** COMMAND: help
10531053
**
10541054
** Usage: %fossil help COMMAND
1055
-** or: %fossil COMMAND -help
1055
+** or: %fossil COMMAND --help
10561056
**
10571057
** Display information on how to use COMMAND. To display a list of
10581058
** available commands one of:
10591059
**
10601060
** %fossil help Show common commands
1061
-** %fossil help --a|-all Show both common and auxiliary commands
1062
-** %fossil help --t|-test Show test commands only
1063
-** %fossil help --x|-aux Show auxiliary commands only
1064
-** %fossil help --w|-www Show list of WWW pages
1061
+** %fossil help -a|--all Show both common and auxiliary commands
1062
+** %fossil help -t|--test Show test commands only
1063
+** %fossil help -x|--aux Show auxiliary commands only
1064
+** %fossil help -w|--www Show list of WWW pages
10651065
*/
10661066
void help_cmd(void){
10671067
int rc, idx, isPage = 0;
10681068
const char *z;
10691069
const char *zCmdOrPage;
10701070
--- src/main.c
+++ src/main.c
@@ -1050,20 +1050,20 @@
1050
1051 /*
1052 ** COMMAND: help
1053 **
1054 ** Usage: %fossil help COMMAND
1055 ** or: %fossil COMMAND -help
1056 **
1057 ** Display information on how to use COMMAND. To display a list of
1058 ** available commands one of:
1059 **
1060 ** %fossil help Show common commands
1061 ** %fossil help --a|-all Show both common and auxiliary commands
1062 ** %fossil help --t|-test Show test commands only
1063 ** %fossil help --x|-aux Show auxiliary commands only
1064 ** %fossil help --w|-www Show list of WWW pages
1065 */
1066 void help_cmd(void){
1067 int rc, idx, isPage = 0;
1068 const char *z;
1069 const char *zCmdOrPage;
1070
--- src/main.c
+++ src/main.c
@@ -1050,20 +1050,20 @@
1050
1051 /*
1052 ** COMMAND: help
1053 **
1054 ** Usage: %fossil help COMMAND
1055 ** or: %fossil COMMAND --help
1056 **
1057 ** Display information on how to use COMMAND. To display a list of
1058 ** available commands one of:
1059 **
1060 ** %fossil help Show common commands
1061 ** %fossil help -a|--all Show both common and auxiliary commands
1062 ** %fossil help -t|--test Show test commands only
1063 ** %fossil help -x|--aux Show auxiliary commands only
1064 ** %fossil help -w|--www Show list of WWW pages
1065 */
1066 void help_cmd(void){
1067 int rc, idx, isPage = 0;
1068 const char *z;
1069 const char *zCmdOrPage;
1070
+1 -1
--- src/publish.c
+++ src/publish.c
@@ -99,11 +99,11 @@
9999
if( bTest ){
100100
/* If the --test option is used, then do not actually publish any
101101
** artifacts. Instead, just list the artifact information on standard
102102
** output. The --test option is useful for verifying correct operation
103103
** of the logic that figures out which artifacts to publish, such as
104
- ** the find_checkin_associates() routine
104
+ ** the find_checkin_associates() routine
105105
*/
106106
describe_artifacts_to_stdout("IN ok", 0);
107107
}else{
108108
/* Standard behavior is simply to remove the published documents from
109109
** the PRIVATE table */
110110
--- src/publish.c
+++ src/publish.c
@@ -99,11 +99,11 @@
99 if( bTest ){
100 /* If the --test option is used, then do not actually publish any
101 ** artifacts. Instead, just list the artifact information on standard
102 ** output. The --test option is useful for verifying correct operation
103 ** of the logic that figures out which artifacts to publish, such as
104 ** the find_checkin_associates() routine
105 */
106 describe_artifacts_to_stdout("IN ok", 0);
107 }else{
108 /* Standard behavior is simply to remove the published documents from
109 ** the PRIVATE table */
110
--- src/publish.c
+++ src/publish.c
@@ -99,11 +99,11 @@
99 if( bTest ){
100 /* If the --test option is used, then do not actually publish any
101 ** artifacts. Instead, just list the artifact information on standard
102 ** output. The --test option is useful for verifying correct operation
103 ** of the logic that figures out which artifacts to publish, such as
104 ** the find_checkin_associates() routine
105 */
106 describe_artifacts_to_stdout("IN ok", 0);
107 }else{
108 /* Standard behavior is simply to remove the published documents from
109 ** the PRIVATE table */
110
+9 -9
--- src/purge.c
+++ src/purge.c
@@ -28,25 +28,25 @@
2828
**
2929
** The purgeevent table contains one entry for each purge event. For each
3030
** purge event, multiple artifacts might have been removed. Each removed
3131
** artifact is stored as an entry in the purgeitem table.
3232
**
33
-** The purgeevent and purgeitem tables are not synced, even by the
34
-** "fossil config" command. They exist only as a backup in case of a
33
+** The purgeevent and purgeitem tables are not synced, even by the
34
+** "fossil config" command. They exist only as a backup in case of a
3535
** mistaken purge or for content recovery in case there is a bug in the
3636
** purge command.
3737
*/
38
-static const char zPurgeInit[] =
38
+static const char zPurgeInit[] =
3939
@ CREATE TABLE IF NOT EXISTS "%w".purgeevent(
4040
@ peid INTEGER PRIMARY KEY, -- Unique ID for the purge event
4141
@ ctime DATETIME, -- When purge occurred. Seconds since 1970.
4242
@ pnotes TEXT -- Human-readable notes about the purge event
4343
@ );
4444
@ CREATE TABLE IF NOT EXISTS "%w".purgeitem(
4545
@ piid INTEGER PRIMARY KEY, -- ID for the purge item
4646
@ peid INTEGER REFERENCES purgeevent ON DELETE CASCADE, -- Purge event
47
-@ orid INTEGER, -- Original RID before purged
47
+@ orid INTEGER, -- Original RID before purged
4848
@ uuid TEXT NOT NULL, -- SHA1 hash of the purged artifact
4949
@ srcid INTEGER, -- Basis purgeitem for delta compression
5050
@ isPrivate BOOLEAN, -- True if artifact was originally private
5151
@ sz INT NOT NULL, -- Uncompressed size of the purged artifact
5252
@ desc TEXT, -- Brief description of this artifact
@@ -122,11 +122,11 @@
122122
db_finalize(&q);
123123
124124
/* Construct the graveyard and copy the artifacts to be purged into the
125125
** graveyard */
126126
if( moveToGraveyard ){
127
- db_multi_exec(zPurgeInit /*works-like:"%w%w"*/,
127
+ db_multi_exec(zPurgeInit /*works-like:"%w%w"*/,
128128
db_name("repository"), db_name("repository"));
129129
db_multi_exec(
130130
"INSERT INTO purgeevent(ctime,pnotes) VALUES(now(),%Q)", zNote
131131
);
132132
peid = db_last_insert_rowid();
@@ -193,11 +193,11 @@
193193
db_end_transaction(0);
194194
return peid;
195195
}
196196
197197
/*
198
-** The TEMP table named zTab contains RIDs for a set of check-ins.
198
+** The TEMP table named zTab contains RIDs for a set of check-ins.
199199
**
200200
** Check to see if any check-in in zTab is a baseline manifest for some
201201
** delta manifest that is not in zTab. Return true if zTab contains a
202202
** baseline for a delta that is not in zTab.
203203
**
@@ -275,11 +275,11 @@
275275
" WHERE srcid IN \"%w_tags\""
276276
" AND rid NOT IN \"%w\")",
277277
zTab, zTab, zTab
278278
);
279279
}
280
-
280
+
281281
/* Transfer the extra artifacts into zTab */
282282
db_multi_exec(
283283
"INSERT OR IGNORE INTO \"%w\" SELECT fid FROM \"%w_files\";"
284284
"INSERT OR IGNORE INTO \"%w\" SELECT tid FROM \"%w_tags\";"
285285
"DROP TABLE \"%w_files\";"
@@ -377,11 +377,11 @@
377377
if( bag_find(&busy, iSrc) ){
378378
fossil_fatal("delta loop while uncompressing purged artifacts");
379379
}
380380
bag_insert(&busy, iSrc);
381381
}
382
- db_prepare(&q,
382
+ db_prepare(&q,
383383
"SELECT uuid, data, isPrivate, ix.piid"
384384
" FROM ix, purgeitem"
385385
" WHERE ix.srcid=%d"
386386
" AND ix.piid=purgeitem.piid;",
387387
iSrc
@@ -436,11 +436,11 @@
436436
** standard output.
437437
**
438438
** fossil purge ?checkins? TAGS... ?OPTIONS?
439439
**
440440
** Move the check-ins identified by TAGS and all of their descendants
441
-** out of the repository and into the graveyard. The "checkins"
441
+** out of the repository and into the graveyard. The "checkins"
442442
** subcommand keyword is option and can be omitted as long as TAGS
443443
** does not conflict with any other subcommand.
444444
**
445445
** If a TAGS includes a branch name then it means all the check-ins
446446
** on the most recent occurrance of that branch.
447447
--- src/purge.c
+++ src/purge.c
@@ -28,25 +28,25 @@
28 **
29 ** The purgeevent table contains one entry for each purge event. For each
30 ** purge event, multiple artifacts might have been removed. Each removed
31 ** artifact is stored as an entry in the purgeitem table.
32 **
33 ** The purgeevent and purgeitem tables are not synced, even by the
34 ** "fossil config" command. They exist only as a backup in case of a
35 ** mistaken purge or for content recovery in case there is a bug in the
36 ** purge command.
37 */
38 static const char zPurgeInit[] =
39 @ CREATE TABLE IF NOT EXISTS "%w".purgeevent(
40 @ peid INTEGER PRIMARY KEY, -- Unique ID for the purge event
41 @ ctime DATETIME, -- When purge occurred. Seconds since 1970.
42 @ pnotes TEXT -- Human-readable notes about the purge event
43 @ );
44 @ CREATE TABLE IF NOT EXISTS "%w".purgeitem(
45 @ piid INTEGER PRIMARY KEY, -- ID for the purge item
46 @ peid INTEGER REFERENCES purgeevent ON DELETE CASCADE, -- Purge event
47 @ orid INTEGER, -- Original RID before purged
48 @ uuid TEXT NOT NULL, -- SHA1 hash of the purged artifact
49 @ srcid INTEGER, -- Basis purgeitem for delta compression
50 @ isPrivate BOOLEAN, -- True if artifact was originally private
51 @ sz INT NOT NULL, -- Uncompressed size of the purged artifact
52 @ desc TEXT, -- Brief description of this artifact
@@ -122,11 +122,11 @@
122 db_finalize(&q);
123
124 /* Construct the graveyard and copy the artifacts to be purged into the
125 ** graveyard */
126 if( moveToGraveyard ){
127 db_multi_exec(zPurgeInit /*works-like:"%w%w"*/,
128 db_name("repository"), db_name("repository"));
129 db_multi_exec(
130 "INSERT INTO purgeevent(ctime,pnotes) VALUES(now(),%Q)", zNote
131 );
132 peid = db_last_insert_rowid();
@@ -193,11 +193,11 @@
193 db_end_transaction(0);
194 return peid;
195 }
196
197 /*
198 ** The TEMP table named zTab contains RIDs for a set of check-ins.
199 **
200 ** Check to see if any check-in in zTab is a baseline manifest for some
201 ** delta manifest that is not in zTab. Return true if zTab contains a
202 ** baseline for a delta that is not in zTab.
203 **
@@ -275,11 +275,11 @@
275 " WHERE srcid IN \"%w_tags\""
276 " AND rid NOT IN \"%w\")",
277 zTab, zTab, zTab
278 );
279 }
280
281 /* Transfer the extra artifacts into zTab */
282 db_multi_exec(
283 "INSERT OR IGNORE INTO \"%w\" SELECT fid FROM \"%w_files\";"
284 "INSERT OR IGNORE INTO \"%w\" SELECT tid FROM \"%w_tags\";"
285 "DROP TABLE \"%w_files\";"
@@ -377,11 +377,11 @@
377 if( bag_find(&busy, iSrc) ){
378 fossil_fatal("delta loop while uncompressing purged artifacts");
379 }
380 bag_insert(&busy, iSrc);
381 }
382 db_prepare(&q,
383 "SELECT uuid, data, isPrivate, ix.piid"
384 " FROM ix, purgeitem"
385 " WHERE ix.srcid=%d"
386 " AND ix.piid=purgeitem.piid;",
387 iSrc
@@ -436,11 +436,11 @@
436 ** standard output.
437 **
438 ** fossil purge ?checkins? TAGS... ?OPTIONS?
439 **
440 ** Move the check-ins identified by TAGS and all of their descendants
441 ** out of the repository and into the graveyard. The "checkins"
442 ** subcommand keyword is option and can be omitted as long as TAGS
443 ** does not conflict with any other subcommand.
444 **
445 ** If a TAGS includes a branch name then it means all the check-ins
446 ** on the most recent occurrance of that branch.
447
--- src/purge.c
+++ src/purge.c
@@ -28,25 +28,25 @@
28 **
29 ** The purgeevent table contains one entry for each purge event. For each
30 ** purge event, multiple artifacts might have been removed. Each removed
31 ** artifact is stored as an entry in the purgeitem table.
32 **
33 ** The purgeevent and purgeitem tables are not synced, even by the
34 ** "fossil config" command. They exist only as a backup in case of a
35 ** mistaken purge or for content recovery in case there is a bug in the
36 ** purge command.
37 */
38 static const char zPurgeInit[] =
39 @ CREATE TABLE IF NOT EXISTS "%w".purgeevent(
40 @ peid INTEGER PRIMARY KEY, -- Unique ID for the purge event
41 @ ctime DATETIME, -- When purge occurred. Seconds since 1970.
42 @ pnotes TEXT -- Human-readable notes about the purge event
43 @ );
44 @ CREATE TABLE IF NOT EXISTS "%w".purgeitem(
45 @ piid INTEGER PRIMARY KEY, -- ID for the purge item
46 @ peid INTEGER REFERENCES purgeevent ON DELETE CASCADE, -- Purge event
47 @ orid INTEGER, -- Original RID before purged
48 @ uuid TEXT NOT NULL, -- SHA1 hash of the purged artifact
49 @ srcid INTEGER, -- Basis purgeitem for delta compression
50 @ isPrivate BOOLEAN, -- True if artifact was originally private
51 @ sz INT NOT NULL, -- Uncompressed size of the purged artifact
52 @ desc TEXT, -- Brief description of this artifact
@@ -122,11 +122,11 @@
122 db_finalize(&q);
123
124 /* Construct the graveyard and copy the artifacts to be purged into the
125 ** graveyard */
126 if( moveToGraveyard ){
127 db_multi_exec(zPurgeInit /*works-like:"%w%w"*/,
128 db_name("repository"), db_name("repository"));
129 db_multi_exec(
130 "INSERT INTO purgeevent(ctime,pnotes) VALUES(now(),%Q)", zNote
131 );
132 peid = db_last_insert_rowid();
@@ -193,11 +193,11 @@
193 db_end_transaction(0);
194 return peid;
195 }
196
197 /*
198 ** The TEMP table named zTab contains RIDs for a set of check-ins.
199 **
200 ** Check to see if any check-in in zTab is a baseline manifest for some
201 ** delta manifest that is not in zTab. Return true if zTab contains a
202 ** baseline for a delta that is not in zTab.
203 **
@@ -275,11 +275,11 @@
275 " WHERE srcid IN \"%w_tags\""
276 " AND rid NOT IN \"%w\")",
277 zTab, zTab, zTab
278 );
279 }
280
281 /* Transfer the extra artifacts into zTab */
282 db_multi_exec(
283 "INSERT OR IGNORE INTO \"%w\" SELECT fid FROM \"%w_files\";"
284 "INSERT OR IGNORE INTO \"%w\" SELECT tid FROM \"%w_tags\";"
285 "DROP TABLE \"%w_files\";"
@@ -377,11 +377,11 @@
377 if( bag_find(&busy, iSrc) ){
378 fossil_fatal("delta loop while uncompressing purged artifacts");
379 }
380 bag_insert(&busy, iSrc);
381 }
382 db_prepare(&q,
383 "SELECT uuid, data, isPrivate, ix.piid"
384 " FROM ix, purgeitem"
385 " WHERE ix.srcid=%d"
386 " AND ix.piid=purgeitem.piid;",
387 iSrc
@@ -436,11 +436,11 @@
436 ** standard output.
437 **
438 ** fossil purge ?checkins? TAGS... ?OPTIONS?
439 **
440 ** Move the check-ins identified by TAGS and all of their descendants
441 ** out of the repository and into the graveyard. The "checkins"
442 ** subcommand keyword is option and can be omitted as long as TAGS
443 ** does not conflict with any other subcommand.
444 **
445 ** If a TAGS includes a branch name then it means all the check-ins
446 ** on the most recent occurrance of that branch.
447
+3 -3
--- src/search.c
+++ src/search.c
@@ -729,11 +729,11 @@
729729
730730
/*
731731
** Number of significant bits in a u32
732732
*/
733733
static int nbits(u32 x){
734
- int n = 0;
734
+ int n = 0;
735735
while( x ){ n++; x >>= 1; }
736736
return n;
737737
}
738738
739739
/*
@@ -1251,11 +1251,11 @@
12511251
}
12521252
}
12531253
}
12541254
12551255
/*
1256
-** This routine is a wrapper around search_stext().
1256
+** This routine is a wrapper around search_stext().
12571257
**
12581258
** This routine looks up the search text, stores it in an internal
12591259
** buffer, and returns a pointer to the text. Subsequent requests
12601260
** for the same document return the same pointer. The returned pointer
12611261
** is valid until the next invocation of this routine. Call this routine
@@ -1693,11 +1693,11 @@
16931693
}
16941694
if( iCmd==5 ){
16951695
if( g.argc<4 ) usage("porter ON/OFF");
16961696
db_set_int("search-stemmer", is_truth(g.argv[3]), 0);
16971697
}
1698
-
1698
+
16991699
17001700
/* destroy or rebuild the index, if requested */
17011701
if( iAction>=1 ){
17021702
search_drop_index();
17031703
}
17041704
--- src/search.c
+++ src/search.c
@@ -729,11 +729,11 @@
729
730 /*
731 ** Number of significant bits in a u32
732 */
733 static int nbits(u32 x){
734 int n = 0;
735 while( x ){ n++; x >>= 1; }
736 return n;
737 }
738
739 /*
@@ -1251,11 +1251,11 @@
1251 }
1252 }
1253 }
1254
1255 /*
1256 ** This routine is a wrapper around search_stext().
1257 **
1258 ** This routine looks up the search text, stores it in an internal
1259 ** buffer, and returns a pointer to the text. Subsequent requests
1260 ** for the same document return the same pointer. The returned pointer
1261 ** is valid until the next invocation of this routine. Call this routine
@@ -1693,11 +1693,11 @@
1693 }
1694 if( iCmd==5 ){
1695 if( g.argc<4 ) usage("porter ON/OFF");
1696 db_set_int("search-stemmer", is_truth(g.argv[3]), 0);
1697 }
1698
1699
1700 /* destroy or rebuild the index, if requested */
1701 if( iAction>=1 ){
1702 search_drop_index();
1703 }
1704
--- src/search.c
+++ src/search.c
@@ -729,11 +729,11 @@
729
730 /*
731 ** Number of significant bits in a u32
732 */
733 static int nbits(u32 x){
734 int n = 0;
735 while( x ){ n++; x >>= 1; }
736 return n;
737 }
738
739 /*
@@ -1251,11 +1251,11 @@
1251 }
1252 }
1253 }
1254
1255 /*
1256 ** This routine is a wrapper around search_stext().
1257 **
1258 ** This routine looks up the search text, stores it in an internal
1259 ** buffer, and returns a pointer to the text. Subsequent requests
1260 ** for the same document return the same pointer. The returned pointer
1261 ** is valid until the next invocation of this routine. Call this routine
@@ -1693,11 +1693,11 @@
1693 }
1694 if( iCmd==5 ){
1695 if( g.argc<4 ) usage("porter ON/OFF");
1696 db_set_int("search-stemmer", is_truth(g.argv[3]), 0);
1697 }
1698
1699
1700 /* destroy or rebuild the index, if requested */
1701 if( iAction>=1 ){
1702 search_drop_index();
1703 }
1704
+5 -1
--- src/style.c
+++ src/style.c
@@ -823,11 +823,11 @@
823823
@ white-space: nowrap;
824824
},
825825
{ "ul.browser li.file",
826826
"List element in the 'flat-view' file browser for a file",
827827
" background-image: url(data:image/gif;base64,R0lGODlhEAAQAJEAAP"
828
- "\\/\\/\\/yEhIf\\/\\/\\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfm"
828
+ "\\/\\/\\/yEhIf\\/\\/\\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfm"
829829
"gOUvoaqDSCxrEEfF14GqFXImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw==);\n"
830830
" background-repeat: no-repeat;\n"
831831
" background-position: 0px center;\n"
832832
" padding-left: 20px;\n"
833833
" padding-top: 2px;\n"
@@ -1108,10 +1108,14 @@
11081108
{ "ul.filelist",
11091109
"List of files in a timeline",
11101110
@ margin-top: 3px;
11111111
@ line-height: 100%;
11121112
},
1113
+ { "ul.filelist li",
1114
+ "List of files in a timeline",
1115
+ @ padding-top: 1px;
1116
+ },
11131117
{ "table.sbsdiffcols",
11141118
"side-by-side diff display (column-based)",
11151119
@ width: 90%;
11161120
@ border-spacing: 0;
11171121
@ font-size: xx-small;
11181122
--- src/style.c
+++ src/style.c
@@ -823,11 +823,11 @@
823 @ white-space: nowrap;
824 },
825 { "ul.browser li.file",
826 "List element in the 'flat-view' file browser for a file",
827 " background-image: url(data:image/gif;base64,R0lGODlhEAAQAJEAAP"
828 "\\/\\/\\/yEhIf\\/\\/\\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfm"
829 "gOUvoaqDSCxrEEfF14GqFXImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw==);\n"
830 " background-repeat: no-repeat;\n"
831 " background-position: 0px center;\n"
832 " padding-left: 20px;\n"
833 " padding-top: 2px;\n"
@@ -1108,10 +1108,14 @@
1108 { "ul.filelist",
1109 "List of files in a timeline",
1110 @ margin-top: 3px;
1111 @ line-height: 100%;
1112 },
 
 
 
 
1113 { "table.sbsdiffcols",
1114 "side-by-side diff display (column-based)",
1115 @ width: 90%;
1116 @ border-spacing: 0;
1117 @ font-size: xx-small;
1118
--- src/style.c
+++ src/style.c
@@ -823,11 +823,11 @@
823 @ white-space: nowrap;
824 },
825 { "ul.browser li.file",
826 "List element in the 'flat-view' file browser for a file",
827 " background-image: url(data:image/gif;base64,R0lGODlhEAAQAJEAAP"
828 "\\/\\/\\/yEhIf\\/\\/\\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfm"
829 "gOUvoaqDSCxrEEfF14GqFXImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw==);\n"
830 " background-repeat: no-repeat;\n"
831 " background-position: 0px center;\n"
832 " padding-left: 20px;\n"
833 " padding-top: 2px;\n"
@@ -1108,10 +1108,14 @@
1108 { "ul.filelist",
1109 "List of files in a timeline",
1110 @ margin-top: 3px;
1111 @ line-height: 100%;
1112 },
1113 { "ul.filelist li",
1114 "List of files in a timeline",
1115 @ padding-top: 1px;
1116 },
1117 { "table.sbsdiffcols",
1118 "side-by-side diff display (column-based)",
1119 @ width: 90%;
1120 @ border-spacing: 0;
1121 @ font-size: xx-small;
1122
--- src/th_main.c
+++ src/th_main.c
@@ -514,10 +514,11 @@
514514
** "useTclStubs" = USE_TCL_STUBS
515515
** "tclStubs" = FOSSIL_ENABLE_TCL_STUBS
516516
** "tclPrivateStubs" = FOSSIL_ENABLE_TCL_PRIVATE_STUBS
517517
** "json" = FOSSIL_ENABLE_JSON
518518
** "markdown" = FOSSIL_ENABLE_MARKDOWN
519
+** "unicodeCmdLine" = !BROKEN_MINGW_CMDLINE
519520
**
520521
*/
521522
static int hasfeatureCmd(
522523
Th_Interp *interp,
523524
void *p,
@@ -576,10 +577,15 @@
576577
#endif
577578
#if defined(FOSSIL_ENABLE_JSON)
578579
else if( 0 == fossil_strnicmp( zArg, "json\0", 5 ) ){
579580
rc = 1;
580581
}
582
+#endif
583
+#if !defined(BROKEN_MINGW_CMDLINE)
584
+ else if( 0 == fossil_strnicmp( zArg, "unicodeCmdLine\0", 15 ) ){
585
+ rc = 1;
586
+ }
581587
#endif
582588
else if( 0 == fossil_strnicmp( zArg, "markdown\0", 9 ) ){
583589
rc = 1;
584590
}
585591
if( g.thTrace ){
586592
--- src/th_main.c
+++ src/th_main.c
@@ -514,10 +514,11 @@
514 ** "useTclStubs" = USE_TCL_STUBS
515 ** "tclStubs" = FOSSIL_ENABLE_TCL_STUBS
516 ** "tclPrivateStubs" = FOSSIL_ENABLE_TCL_PRIVATE_STUBS
517 ** "json" = FOSSIL_ENABLE_JSON
518 ** "markdown" = FOSSIL_ENABLE_MARKDOWN
 
519 **
520 */
521 static int hasfeatureCmd(
522 Th_Interp *interp,
523 void *p,
@@ -576,10 +577,15 @@
576 #endif
577 #if defined(FOSSIL_ENABLE_JSON)
578 else if( 0 == fossil_strnicmp( zArg, "json\0", 5 ) ){
579 rc = 1;
580 }
 
 
 
 
 
581 #endif
582 else if( 0 == fossil_strnicmp( zArg, "markdown\0", 9 ) ){
583 rc = 1;
584 }
585 if( g.thTrace ){
586
--- src/th_main.c
+++ src/th_main.c
@@ -514,10 +514,11 @@
514 ** "useTclStubs" = USE_TCL_STUBS
515 ** "tclStubs" = FOSSIL_ENABLE_TCL_STUBS
516 ** "tclPrivateStubs" = FOSSIL_ENABLE_TCL_PRIVATE_STUBS
517 ** "json" = FOSSIL_ENABLE_JSON
518 ** "markdown" = FOSSIL_ENABLE_MARKDOWN
519 ** "unicodeCmdLine" = !BROKEN_MINGW_CMDLINE
520 **
521 */
522 static int hasfeatureCmd(
523 Th_Interp *interp,
524 void *p,
@@ -576,10 +577,15 @@
577 #endif
578 #if defined(FOSSIL_ENABLE_JSON)
579 else if( 0 == fossil_strnicmp( zArg, "json\0", 5 ) ){
580 rc = 1;
581 }
582 #endif
583 #if !defined(BROKEN_MINGW_CMDLINE)
584 else if( 0 == fossil_strnicmp( zArg, "unicodeCmdLine\0", 15 ) ){
585 rc = 1;
586 }
587 #endif
588 else if( 0 == fossil_strnicmp( zArg, "markdown\0", 9 ) ){
589 rc = 1;
590 }
591 if( g.thTrace ){
592
--- src/th_main.c
+++ src/th_main.c
@@ -514,10 +514,11 @@
514514
** "useTclStubs" = USE_TCL_STUBS
515515
** "tclStubs" = FOSSIL_ENABLE_TCL_STUBS
516516
** "tclPrivateStubs" = FOSSIL_ENABLE_TCL_PRIVATE_STUBS
517517
** "json" = FOSSIL_ENABLE_JSON
518518
** "markdown" = FOSSIL_ENABLE_MARKDOWN
519
+** "unicodeCmdLine" = !BROKEN_MINGW_CMDLINE
519520
**
520521
*/
521522
static int hasfeatureCmd(
522523
Th_Interp *interp,
523524
void *p,
@@ -576,10 +577,15 @@
576577
#endif
577578
#if defined(FOSSIL_ENABLE_JSON)
578579
else if( 0 == fossil_strnicmp( zArg, "json\0", 5 ) ){
579580
rc = 1;
580581
}
582
+#endif
583
+#if !defined(BROKEN_MINGW_CMDLINE)
584
+ else if( 0 == fossil_strnicmp( zArg, "unicodeCmdLine\0", 15 ) ){
585
+ rc = 1;
586
+ }
581587
#endif
582588
else if( 0 == fossil_strnicmp( zArg, "markdown\0", 9 ) ){
583589
rc = 1;
584590
}
585591
if( g.thTrace ){
586592
--- src/th_main.c
+++ src/th_main.c
@@ -514,10 +514,11 @@
514 ** "useTclStubs" = USE_TCL_STUBS
515 ** "tclStubs" = FOSSIL_ENABLE_TCL_STUBS
516 ** "tclPrivateStubs" = FOSSIL_ENABLE_TCL_PRIVATE_STUBS
517 ** "json" = FOSSIL_ENABLE_JSON
518 ** "markdown" = FOSSIL_ENABLE_MARKDOWN
 
519 **
520 */
521 static int hasfeatureCmd(
522 Th_Interp *interp,
523 void *p,
@@ -576,10 +577,15 @@
576 #endif
577 #if defined(FOSSIL_ENABLE_JSON)
578 else if( 0 == fossil_strnicmp( zArg, "json\0", 5 ) ){
579 rc = 1;
580 }
 
 
 
 
 
581 #endif
582 else if( 0 == fossil_strnicmp( zArg, "markdown\0", 9 ) ){
583 rc = 1;
584 }
585 if( g.thTrace ){
586
--- src/th_main.c
+++ src/th_main.c
@@ -514,10 +514,11 @@
514 ** "useTclStubs" = USE_TCL_STUBS
515 ** "tclStubs" = FOSSIL_ENABLE_TCL_STUBS
516 ** "tclPrivateStubs" = FOSSIL_ENABLE_TCL_PRIVATE_STUBS
517 ** "json" = FOSSIL_ENABLE_JSON
518 ** "markdown" = FOSSIL_ENABLE_MARKDOWN
519 ** "unicodeCmdLine" = !BROKEN_MINGW_CMDLINE
520 **
521 */
522 static int hasfeatureCmd(
523 Th_Interp *interp,
524 void *p,
@@ -576,10 +577,15 @@
577 #endif
578 #if defined(FOSSIL_ENABLE_JSON)
579 else if( 0 == fossil_strnicmp( zArg, "json\0", 5 ) ){
580 rc = 1;
581 }
582 #endif
583 #if !defined(BROKEN_MINGW_CMDLINE)
584 else if( 0 == fossil_strnicmp( zArg, "unicodeCmdLine\0", 15 ) ){
585 rc = 1;
586 }
587 #endif
588 else if( 0 == fossil_strnicmp( zArg, "markdown\0", 9 ) ){
589 rc = 1;
590 }
591 if( g.thTrace ){
592
+1 -1
--- www/index.wiki
+++ www/index.wiki
@@ -14,11 +14,11 @@
1414
<li> [./hints.wiki | Tip &amp; Hints]
1515
<li> [./permutedindex.html | Documentation Index]
1616
<li> [http://www.fossil-scm.org/schimpf-book/home | Jim Schimpf's book]
1717
<li> Mailing list
1818
<ul>
19
- <li> [http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users | sign-up]
19
+ <li> [http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/fossil-users | sign-up]
2020
<li> [http://www.mail-archive.com/[email protected] | archives]
2121
</ul>
2222
</ul>
2323
<center><img src="fossil3.gif"></center>
2424
</div>
2525
--- www/index.wiki
+++ www/index.wiki
@@ -14,11 +14,11 @@
14 <li> [./hints.wiki | Tip &amp; Hints]
15 <li> [./permutedindex.html | Documentation Index]
16 <li> [http://www.fossil-scm.org/schimpf-book/home | Jim Schimpf's book]
17 <li> Mailing list
18 <ul>
19 <li> [http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users | sign-up]
20 <li> [http://www.mail-archive.com/[email protected] | archives]
21 </ul>
22 </ul>
23 <center><img src="fossil3.gif"></center>
24 </div>
25
--- www/index.wiki
+++ www/index.wiki
@@ -14,11 +14,11 @@
14 <li> [./hints.wiki | Tip &amp; Hints]
15 <li> [./permutedindex.html | Documentation Index]
16 <li> [http://www.fossil-scm.org/schimpf-book/home | Jim Schimpf's book]
17 <li> Mailing list
18 <ul>
19 <li> [http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/fossil-users | sign-up]
20 <li> [http://www.mail-archive.com/[email protected] | archives]
21 </ul>
22 </ul>
23 <center><img src="fossil3.gif"></center>
24 </div>
25
--- www/tech_overview.wiki
+++ www/tech_overview.wiki
@@ -130,10 +130,13 @@
130130
located in the user's home directory. On Windows, the configuration
131131
database is named "_fossil" (using an underscore as the first character
132132
instead of a dot) and is located in the directory specified by the
133133
LOCALAPPDATA, APPDATA, or HOMEPATH environment variables, in that order.
134134
135
+You can override this default location by defining the environment
136
+variable FOSSIL_HOME pointing to an appropriate (writable) directory.
137
+
135138
<h3>2.2 Repository Databases</h3>
136139
137140
The repository database is the file that is commonly referred to as
138141
"the repository". This is because the repository database contains,
139142
among other things, the complete revision, ticket, and wiki history for
140143
--- www/tech_overview.wiki
+++ www/tech_overview.wiki
@@ -130,10 +130,13 @@
130 located in the user's home directory. On Windows, the configuration
131 database is named "_fossil" (using an underscore as the first character
132 instead of a dot) and is located in the directory specified by the
133 LOCALAPPDATA, APPDATA, or HOMEPATH environment variables, in that order.
134
 
 
 
135 <h3>2.2 Repository Databases</h3>
136
137 The repository database is the file that is commonly referred to as
138 "the repository". This is because the repository database contains,
139 among other things, the complete revision, ticket, and wiki history for
140
--- www/tech_overview.wiki
+++ www/tech_overview.wiki
@@ -130,10 +130,13 @@
130 located in the user's home directory. On Windows, the configuration
131 database is named "_fossil" (using an underscore as the first character
132 instead of a dot) and is located in the directory specified by the
133 LOCALAPPDATA, APPDATA, or HOMEPATH environment variables, in that order.
134
135 You can override this default location by defining the environment
136 variable FOSSIL_HOME pointing to an appropriate (writable) directory.
137
138 <h3>2.2 Repository Databases</h3>
139
140 The repository database is the file that is commonly referred to as
141 "the repository". This is because the repository database contains,
142 among other things, the complete revision, ticket, and wiki history for
143

Keyboard Shortcuts

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