Fossil SCM

Add 'move-files' and 'remove-files' settings to enable moving or removing files when the mv or rm commands are used, respectively.

mistachkin 2015-02-05 03:39 trunk
Commit 21e08f09049a4031bb22fa85a6e0c0f67df876b8
+107 -10
--- src/add.c
+++ src/add.c
@@ -328,10 +328,41 @@
328328
glob_free(pIgnore);
329329
glob_free(pClean);
330330
331331
add_files_in_sfile(vid);
332332
db_end_transaction(0);
333
+
334
+}
335
+
336
+static void init_files_to_remove(){
337
+ db_multi_exec("CREATE TEMP TABLE fremove(x TEXT PRIMARY KEY %s)",
338
+ filename_collation());
339
+}
340
+
341
+static void add_file_to_remove(
342
+ const char *zOldName /* The old name of the file on disk. */
343
+){
344
+ Blob fullOldName;
345
+ file_canonical_name(zOldName, &fullOldName, 0);
346
+ db_multi_exec("INSERT INTO fremove VALUES('%q');", blob_str(&fullOldName));
347
+ blob_reset(&fullOldName);
348
+}
349
+
350
+static void process_files_to_remove(
351
+ int dryRunFlag /* Non-zero to actually operate on the file-system. */
352
+){
353
+ Stmt remove;
354
+ db_prepare(&remove, "SELECT x FROM fremove ORDER BY x;");
355
+ while( db_step(&remove)==SQLITE_ROW ){
356
+ const char *zOldName = db_column_text(&remove, 0);
357
+ fossil_print("REMOVED %s\n", zOldName);
358
+ if( !dryRunFlag ){
359
+ file_delete(zOldName);
360
+ }
361
+ }
362
+ db_finalize(&remove);
363
+ db_multi_exec("DROP TABLE fremove;");
333364
}
334365
335366
/*
336367
** COMMAND: rm
337368
** COMMAND: delete*
@@ -350,17 +381,23 @@
350381
**
351382
** See also: addremove, add
352383
*/
353384
void delete_cmd(void){
354385
int i;
386
+ int removeFiles;
387
+ int dryRunFlag;
355388
Stmt loop;
389
+
390
+ dryRunFlag = find_option("dry-run","n",0)!=0;
356391
357392
/* We should be done with options.. */
358393
verify_all_options();
359394
360395
db_must_be_within_tree();
361396
db_begin_transaction();
397
+ removeFiles = db_get_boolean("remove-files",0);
398
+ if( removeFiles ) init_files_to_remove();
362399
db_multi_exec("CREATE TEMP TABLE sfile(x TEXT PRIMARY KEY %s)",
363400
filename_collation());
364401
for(i=2; i<g.argc; i++){
365402
Blob treeName;
366403
char *zTreeName;
@@ -380,17 +417,21 @@
380417
}
381418
382419
db_prepare(&loop, "SELECT x FROM sfile");
383420
while( db_step(&loop)==SQLITE_ROW ){
384421
fossil_print("DELETED %s\n", db_column_text(&loop, 0));
422
+ if( removeFiles ) add_file_to_remove(db_column_text(&loop, 0));
385423
}
386424
db_finalize(&loop);
387
- db_multi_exec(
388
- "UPDATE vfile SET deleted=1 WHERE pathname IN sfile;"
389
- "DELETE FROM vfile WHERE rid=0 AND deleted;"
390
- );
425
+ if( !dryRunFlag ){
426
+ db_multi_exec(
427
+ "UPDATE vfile SET deleted=1 WHERE pathname IN sfile;"
428
+ "DELETE FROM vfile WHERE rid=0 AND deleted;"
429
+ );
430
+ }
391431
db_end_transaction(0);
432
+ if( removeFiles ) process_files_to_remove(dryRunFlag);
392433
}
393434
394435
/*
395436
** Capture the command-line --case-sensitive option.
396437
*/
@@ -586,11 +627,16 @@
586627
/*
587628
** Rename a single file.
588629
**
589630
** The original name of the file is zOrig. The new filename is zNew.
590631
*/
591
-static void mv_one_file(int vid, const char *zOrig, const char *zNew){
632
+static void mv_one_file(
633
+ int vid,
634
+ const char *zOrig,
635
+ const char *zNew,
636
+ int dryRunFlag
637
+){
592638
int x = db_int(-1, "SELECT deleted FROM vfile WHERE pathname=%Q %s",
593639
zNew, filename_collation());
594640
if( x>=0 ){
595641
if( x==0 ){
596642
fossil_fatal("cannot rename '%s' to '%s' since another file named '%s'"
@@ -599,14 +645,58 @@
599645
fossil_fatal("cannot rename '%s' to '%s' since the delete of '%s' has "
600646
"not yet been committed", zOrig, zNew, zNew);
601647
}
602648
}
603649
fossil_print("RENAME %s %s\n", zOrig, zNew);
604
- db_multi_exec(
605
- "UPDATE vfile SET pathname='%q' WHERE pathname='%q' %s AND vid=%d",
606
- zNew, zOrig, filename_collation(), vid
607
- );
650
+ if( !dryRunFlag ){
651
+ db_multi_exec(
652
+ "UPDATE vfile SET pathname='%q' WHERE pathname='%q' %s AND vid=%d",
653
+ zNew, zOrig, filename_collation(), vid
654
+ );
655
+ }
656
+}
657
+
658
+static void init_files_to_move(){
659
+ db_multi_exec("CREATE TEMP TABLE IF NOT EXISTS "
660
+ "fmove(x TEXT PRIMARY KEY %s, y TEXT %s)",
661
+ filename_collation(), filename_collation());
662
+}
663
+
664
+static void add_file_to_move(
665
+ const char *zOldName, /* The old name of the file on disk. */
666
+ const char *zNewName /* The new name of the file on disk. */
667
+){
668
+ Blob fullOldName;
669
+ Blob fullNewName;
670
+ file_canonical_name(zOldName, &fullOldName, 0);
671
+ file_canonical_name(zNewName, &fullNewName, 0);
672
+ db_multi_exec("INSERT INTO fmove VALUES('%q','%q');",
673
+ blob_str(&fullOldName), blob_str(&fullNewName));
674
+ blob_reset(&fullNewName);
675
+ blob_reset(&fullOldName);
676
+}
677
+
678
+static void process_files_to_move(
679
+ int dryRunFlag /* Non-zero to actually operate on the file-system. */
680
+){
681
+ Stmt move;
682
+ db_prepare(&move, "SELECT x, y FROM fmove ORDER BY x;");
683
+ while( db_step(&move)==SQLITE_ROW ){
684
+ const char *zOldName = db_column_text(&move, 0);
685
+ const char *zNewName = db_column_text(&move, 1);
686
+ fossil_print("MOVED %s %s\n", zOldName, zNewName);
687
+ if( !dryRunFlag ){
688
+ if( file_wd_islink(zOldName) ){
689
+ symlink_copy(zOldName, zNewName);
690
+ }else{
691
+ file_copy(zOldName, zNewName);
692
+ }
693
+ file_delete(zOldName);
694
+ }
695
+ }
696
+ db_finalize(&move);
697
+ db_multi_exec("DROP TABLE fmove;");
608698
}
609699
610700
/*
611701
** COMMAND: mv
612702
** COMMAND: rename*
@@ -627,15 +717,18 @@
627717
** See also: changes, status
628718
*/
629719
void mv_cmd(void){
630720
int i;
631721
int vid;
722
+ int moveFiles;
723
+ int dryRunFlag;
632724
char *zDest;
633725
Blob dest;
634726
Stmt q;
635727
636728
db_must_be_within_tree();
729
+ dryRunFlag = find_option("dry-run","n",0)!=0;
637730
638731
/* We should be done with options.. */
639732
verify_all_options();
640733
641734
vid = db_lget_int("checkout", 0);
@@ -645,10 +738,12 @@
645738
if( g.argc<4 ){
646739
usage("OLDNAME NEWNAME");
647740
}
648741
zDest = g.argv[g.argc-1];
649742
db_begin_transaction();
743
+ moveFiles = db_get_boolean("move-files",0);
744
+ if( moveFiles ) init_files_to_move();
650745
file_tree_name(zDest, &dest, 1);
651746
db_multi_exec(
652747
"UPDATE vfile SET origname=pathname WHERE origname IS NULL;"
653748
);
654749
db_multi_exec(
@@ -703,18 +798,20 @@
703798
}
704799
db_prepare(&q, "SELECT f, t FROM mv ORDER BY f");
705800
while( db_step(&q)==SQLITE_ROW ){
706801
const char *zFrom = db_column_text(&q, 0);
707802
const char *zTo = db_column_text(&q, 1);
708
- mv_one_file(vid, zFrom, zTo);
803
+ mv_one_file(vid, zFrom, zTo, dryRunFlag);
804
+ if( moveFiles ) add_file_to_move(zFrom, zTo);
709805
}
710806
db_finalize(&q);
711807
db_end_transaction(0);
808
+ if( moveFiles ) process_files_to_move(dryRunFlag);
712809
}
713810
714811
/*
715812
** Function for stash_apply to be able to restore a file and indicate
716813
** newly ADDED state.
717814
*/
718815
int stash_add_files_in_sfile(int vid){
719816
return add_files_in_sfile(vid);
720817
}
721818
--- src/add.c
+++ src/add.c
@@ -328,10 +328,41 @@
328 glob_free(pIgnore);
329 glob_free(pClean);
330
331 add_files_in_sfile(vid);
332 db_end_transaction(0);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
333 }
334
335 /*
336 ** COMMAND: rm
337 ** COMMAND: delete*
@@ -350,17 +381,23 @@
350 **
351 ** See also: addremove, add
352 */
353 void delete_cmd(void){
354 int i;
 
 
355 Stmt loop;
 
 
356
357 /* We should be done with options.. */
358 verify_all_options();
359
360 db_must_be_within_tree();
361 db_begin_transaction();
 
 
362 db_multi_exec("CREATE TEMP TABLE sfile(x TEXT PRIMARY KEY %s)",
363 filename_collation());
364 for(i=2; i<g.argc; i++){
365 Blob treeName;
366 char *zTreeName;
@@ -380,17 +417,21 @@
380 }
381
382 db_prepare(&loop, "SELECT x FROM sfile");
383 while( db_step(&loop)==SQLITE_ROW ){
384 fossil_print("DELETED %s\n", db_column_text(&loop, 0));
 
385 }
386 db_finalize(&loop);
387 db_multi_exec(
388 "UPDATE vfile SET deleted=1 WHERE pathname IN sfile;"
389 "DELETE FROM vfile WHERE rid=0 AND deleted;"
390 );
 
 
391 db_end_transaction(0);
 
392 }
393
394 /*
395 ** Capture the command-line --case-sensitive option.
396 */
@@ -586,11 +627,16 @@
586 /*
587 ** Rename a single file.
588 **
589 ** The original name of the file is zOrig. The new filename is zNew.
590 */
591 static void mv_one_file(int vid, const char *zOrig, const char *zNew){
 
 
 
 
 
592 int x = db_int(-1, "SELECT deleted FROM vfile WHERE pathname=%Q %s",
593 zNew, filename_collation());
594 if( x>=0 ){
595 if( x==0 ){
596 fossil_fatal("cannot rename '%s' to '%s' since another file named '%s'"
@@ -599,14 +645,58 @@
599 fossil_fatal("cannot rename '%s' to '%s' since the delete of '%s' has "
600 "not yet been committed", zOrig, zNew, zNew);
601 }
602 }
603 fossil_print("RENAME %s %s\n", zOrig, zNew);
604 db_multi_exec(
605 "UPDATE vfile SET pathname='%q' WHERE pathname='%q' %s AND vid=%d",
606 zNew, zOrig, filename_collation(), vid
607 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
608 }
609
610 /*
611 ** COMMAND: mv
612 ** COMMAND: rename*
@@ -627,15 +717,18 @@
627 ** See also: changes, status
628 */
629 void mv_cmd(void){
630 int i;
631 int vid;
 
 
632 char *zDest;
633 Blob dest;
634 Stmt q;
635
636 db_must_be_within_tree();
 
637
638 /* We should be done with options.. */
639 verify_all_options();
640
641 vid = db_lget_int("checkout", 0);
@@ -645,10 +738,12 @@
645 if( g.argc<4 ){
646 usage("OLDNAME NEWNAME");
647 }
648 zDest = g.argv[g.argc-1];
649 db_begin_transaction();
 
 
650 file_tree_name(zDest, &dest, 1);
651 db_multi_exec(
652 "UPDATE vfile SET origname=pathname WHERE origname IS NULL;"
653 );
654 db_multi_exec(
@@ -703,18 +798,20 @@
703 }
704 db_prepare(&q, "SELECT f, t FROM mv ORDER BY f");
705 while( db_step(&q)==SQLITE_ROW ){
706 const char *zFrom = db_column_text(&q, 0);
707 const char *zTo = db_column_text(&q, 1);
708 mv_one_file(vid, zFrom, zTo);
 
709 }
710 db_finalize(&q);
711 db_end_transaction(0);
 
712 }
713
714 /*
715 ** Function for stash_apply to be able to restore a file and indicate
716 ** newly ADDED state.
717 */
718 int stash_add_files_in_sfile(int vid){
719 return add_files_in_sfile(vid);
720 }
721
--- src/add.c
+++ src/add.c
@@ -328,10 +328,41 @@
328 glob_free(pIgnore);
329 glob_free(pClean);
330
331 add_files_in_sfile(vid);
332 db_end_transaction(0);
333
334 }
335
336 static void init_files_to_remove(){
337 db_multi_exec("CREATE TEMP TABLE fremove(x TEXT PRIMARY KEY %s)",
338 filename_collation());
339 }
340
341 static void add_file_to_remove(
342 const char *zOldName /* The old name of the file on disk. */
343 ){
344 Blob fullOldName;
345 file_canonical_name(zOldName, &fullOldName, 0);
346 db_multi_exec("INSERT INTO fremove VALUES('%q');", blob_str(&fullOldName));
347 blob_reset(&fullOldName);
348 }
349
350 static void process_files_to_remove(
351 int dryRunFlag /* Non-zero to actually operate on the file-system. */
352 ){
353 Stmt remove;
354 db_prepare(&remove, "SELECT x FROM fremove ORDER BY x;");
355 while( db_step(&remove)==SQLITE_ROW ){
356 const char *zOldName = db_column_text(&remove, 0);
357 fossil_print("REMOVED %s\n", zOldName);
358 if( !dryRunFlag ){
359 file_delete(zOldName);
360 }
361 }
362 db_finalize(&remove);
363 db_multi_exec("DROP TABLE fremove;");
364 }
365
366 /*
367 ** COMMAND: rm
368 ** COMMAND: delete*
@@ -350,17 +381,23 @@
381 **
382 ** See also: addremove, add
383 */
384 void delete_cmd(void){
385 int i;
386 int removeFiles;
387 int dryRunFlag;
388 Stmt loop;
389
390 dryRunFlag = find_option("dry-run","n",0)!=0;
391
392 /* We should be done with options.. */
393 verify_all_options();
394
395 db_must_be_within_tree();
396 db_begin_transaction();
397 removeFiles = db_get_boolean("remove-files",0);
398 if( removeFiles ) init_files_to_remove();
399 db_multi_exec("CREATE TEMP TABLE sfile(x TEXT PRIMARY KEY %s)",
400 filename_collation());
401 for(i=2; i<g.argc; i++){
402 Blob treeName;
403 char *zTreeName;
@@ -380,17 +417,21 @@
417 }
418
419 db_prepare(&loop, "SELECT x FROM sfile");
420 while( db_step(&loop)==SQLITE_ROW ){
421 fossil_print("DELETED %s\n", db_column_text(&loop, 0));
422 if( removeFiles ) add_file_to_remove(db_column_text(&loop, 0));
423 }
424 db_finalize(&loop);
425 if( !dryRunFlag ){
426 db_multi_exec(
427 "UPDATE vfile SET deleted=1 WHERE pathname IN sfile;"
428 "DELETE FROM vfile WHERE rid=0 AND deleted;"
429 );
430 }
431 db_end_transaction(0);
432 if( removeFiles ) process_files_to_remove(dryRunFlag);
433 }
434
435 /*
436 ** Capture the command-line --case-sensitive option.
437 */
@@ -586,11 +627,16 @@
627 /*
628 ** Rename a single file.
629 **
630 ** The original name of the file is zOrig. The new filename is zNew.
631 */
632 static void mv_one_file(
633 int vid,
634 const char *zOrig,
635 const char *zNew,
636 int dryRunFlag
637 ){
638 int x = db_int(-1, "SELECT deleted FROM vfile WHERE pathname=%Q %s",
639 zNew, filename_collation());
640 if( x>=0 ){
641 if( x==0 ){
642 fossil_fatal("cannot rename '%s' to '%s' since another file named '%s'"
@@ -599,14 +645,58 @@
645 fossil_fatal("cannot rename '%s' to '%s' since the delete of '%s' has "
646 "not yet been committed", zOrig, zNew, zNew);
647 }
648 }
649 fossil_print("RENAME %s %s\n", zOrig, zNew);
650 if( !dryRunFlag ){
651 db_multi_exec(
652 "UPDATE vfile SET pathname='%q' WHERE pathname='%q' %s AND vid=%d",
653 zNew, zOrig, filename_collation(), vid
654 );
655 }
656 }
657
658 static void init_files_to_move(){
659 db_multi_exec("CREATE TEMP TABLE IF NOT EXISTS "
660 "fmove(x TEXT PRIMARY KEY %s, y TEXT %s)",
661 filename_collation(), filename_collation());
662 }
663
664 static void add_file_to_move(
665 const char *zOldName, /* The old name of the file on disk. */
666 const char *zNewName /* The new name of the file on disk. */
667 ){
668 Blob fullOldName;
669 Blob fullNewName;
670 file_canonical_name(zOldName, &fullOldName, 0);
671 file_canonical_name(zNewName, &fullNewName, 0);
672 db_multi_exec("INSERT INTO fmove VALUES('%q','%q');",
673 blob_str(&fullOldName), blob_str(&fullNewName));
674 blob_reset(&fullNewName);
675 blob_reset(&fullOldName);
676 }
677
678 static void process_files_to_move(
679 int dryRunFlag /* Non-zero to actually operate on the file-system. */
680 ){
681 Stmt move;
682 db_prepare(&move, "SELECT x, y FROM fmove ORDER BY x;");
683 while( db_step(&move)==SQLITE_ROW ){
684 const char *zOldName = db_column_text(&move, 0);
685 const char *zNewName = db_column_text(&move, 1);
686 fossil_print("MOVED %s %s\n", zOldName, zNewName);
687 if( !dryRunFlag ){
688 if( file_wd_islink(zOldName) ){
689 symlink_copy(zOldName, zNewName);
690 }else{
691 file_copy(zOldName, zNewName);
692 }
693 file_delete(zOldName);
694 }
695 }
696 db_finalize(&move);
697 db_multi_exec("DROP TABLE fmove;");
698 }
699
700 /*
701 ** COMMAND: mv
702 ** COMMAND: rename*
@@ -627,15 +717,18 @@
717 ** See also: changes, status
718 */
719 void mv_cmd(void){
720 int i;
721 int vid;
722 int moveFiles;
723 int dryRunFlag;
724 char *zDest;
725 Blob dest;
726 Stmt q;
727
728 db_must_be_within_tree();
729 dryRunFlag = find_option("dry-run","n",0)!=0;
730
731 /* We should be done with options.. */
732 verify_all_options();
733
734 vid = db_lget_int("checkout", 0);
@@ -645,10 +738,12 @@
738 if( g.argc<4 ){
739 usage("OLDNAME NEWNAME");
740 }
741 zDest = g.argv[g.argc-1];
742 db_begin_transaction();
743 moveFiles = db_get_boolean("move-files",0);
744 if( moveFiles ) init_files_to_move();
745 file_tree_name(zDest, &dest, 1);
746 db_multi_exec(
747 "UPDATE vfile SET origname=pathname WHERE origname IS NULL;"
748 );
749 db_multi_exec(
@@ -703,18 +798,20 @@
798 }
799 db_prepare(&q, "SELECT f, t FROM mv ORDER BY f");
800 while( db_step(&q)==SQLITE_ROW ){
801 const char *zFrom = db_column_text(&q, 0);
802 const char *zTo = db_column_text(&q, 1);
803 mv_one_file(vid, zFrom, zTo, dryRunFlag);
804 if( moveFiles ) add_file_to_move(zFrom, zTo);
805 }
806 db_finalize(&q);
807 db_end_transaction(0);
808 if( moveFiles ) process_files_to_move(dryRunFlag);
809 }
810
811 /*
812 ** Function for stash_apply to be able to restore a file and indicate
813 ** newly ADDED state.
814 */
815 int stash_add_files_in_sfile(int vid){
816 return add_files_in_sfile(vid);
817 }
818
--- src/configure.c
+++ src/configure.c
@@ -124,10 +124,12 @@
124124
{ "keep-glob", CONFIGSET_PROJ },
125125
{ "crnl-glob", CONFIGSET_PROJ },
126126
{ "encoding-glob", CONFIGSET_PROJ },
127127
{ "empty-dirs", CONFIGSET_PROJ },
128128
{ "allow-symlinks", CONFIGSET_PROJ },
129
+ { "move-files", CONFIGSET_PROJ },
130
+ { "remove-files", CONFIGSET_PROJ },
129131
130132
{ "ticket-table", CONFIGSET_TKT },
131133
{ "ticket-common", CONFIGSET_TKT },
132134
{ "ticket-change", CONFIGSET_TKT },
133135
{ "ticket-newpage", CONFIGSET_TKT },
134136
--- src/configure.c
+++ src/configure.c
@@ -124,10 +124,12 @@
124 { "keep-glob", CONFIGSET_PROJ },
125 { "crnl-glob", CONFIGSET_PROJ },
126 { "encoding-glob", CONFIGSET_PROJ },
127 { "empty-dirs", CONFIGSET_PROJ },
128 { "allow-symlinks", CONFIGSET_PROJ },
 
 
129
130 { "ticket-table", CONFIGSET_TKT },
131 { "ticket-common", CONFIGSET_TKT },
132 { "ticket-change", CONFIGSET_TKT },
133 { "ticket-newpage", CONFIGSET_TKT },
134
--- src/configure.c
+++ src/configure.c
@@ -124,10 +124,12 @@
124 { "keep-glob", CONFIGSET_PROJ },
125 { "crnl-glob", CONFIGSET_PROJ },
126 { "encoding-glob", CONFIGSET_PROJ },
127 { "empty-dirs", CONFIGSET_PROJ },
128 { "allow-symlinks", CONFIGSET_PROJ },
129 { "move-files", CONFIGSET_PROJ },
130 { "remove-files", CONFIGSET_PROJ },
131
132 { "ticket-table", CONFIGSET_TKT },
133 { "ticket-common", CONFIGSET_TKT },
134 { "ticket-change", CONFIGSET_TKT },
135 { "ticket-newpage", CONFIGSET_TKT },
136
+2
--- src/db.c
+++ src/db.c
@@ -2398,14 +2398,16 @@
23982398
{ "localauth", 0, 0, 0, 0, "off" },
23992399
{ "main-branch", 0, 40, 0, 0, "trunk" },
24002400
{ "manifest", 0, 0, 1, 0, "off" },
24012401
{ "max-loadavg", 0, 25, 0, 0, "0.0" },
24022402
{ "max-upload", 0, 25, 0, 0, "250000" },
2403
+ { "move-files", 0, 0, 0, 0, "off" },
24032404
{ "mtime-changes", 0, 0, 0, 0, "on" },
24042405
{ "pgp-command", 0, 40, 0, 0, "gpg --clearsign -o " },
24052406
{ "proxy", 0, 32, 0, 0, "off" },
24062407
{ "relative-paths", 0, 0, 0, 0, "on" },
2408
+ { "remove-files", 0, 0, 0, 0, "off" },
24072409
{ "repo-cksum", 0, 0, 0, 0, "on" },
24082410
{ "self-register", 0, 0, 0, 0, "off" },
24092411
{ "ssh-command", 0, 40, 0, 0, "" },
24102412
{ "ssl-ca-location", 0, 40, 0, 0, "" },
24112413
{ "ssl-identity", 0, 40, 0, 0, "" },
24122414
--- src/db.c
+++ src/db.c
@@ -2398,14 +2398,16 @@
2398 { "localauth", 0, 0, 0, 0, "off" },
2399 { "main-branch", 0, 40, 0, 0, "trunk" },
2400 { "manifest", 0, 0, 1, 0, "off" },
2401 { "max-loadavg", 0, 25, 0, 0, "0.0" },
2402 { "max-upload", 0, 25, 0, 0, "250000" },
 
2403 { "mtime-changes", 0, 0, 0, 0, "on" },
2404 { "pgp-command", 0, 40, 0, 0, "gpg --clearsign -o " },
2405 { "proxy", 0, 32, 0, 0, "off" },
2406 { "relative-paths", 0, 0, 0, 0, "on" },
 
2407 { "repo-cksum", 0, 0, 0, 0, "on" },
2408 { "self-register", 0, 0, 0, 0, "off" },
2409 { "ssh-command", 0, 40, 0, 0, "" },
2410 { "ssl-ca-location", 0, 40, 0, 0, "" },
2411 { "ssl-identity", 0, 40, 0, 0, "" },
2412
--- src/db.c
+++ src/db.c
@@ -2398,14 +2398,16 @@
2398 { "localauth", 0, 0, 0, 0, "off" },
2399 { "main-branch", 0, 40, 0, 0, "trunk" },
2400 { "manifest", 0, 0, 1, 0, "off" },
2401 { "max-loadavg", 0, 25, 0, 0, "0.0" },
2402 { "max-upload", 0, 25, 0, 0, "250000" },
2403 { "move-files", 0, 0, 0, 0, "off" },
2404 { "mtime-changes", 0, 0, 0, 0, "on" },
2405 { "pgp-command", 0, 40, 0, 0, "gpg --clearsign -o " },
2406 { "proxy", 0, 32, 0, 0, "off" },
2407 { "relative-paths", 0, 0, 0, 0, "on" },
2408 { "remove-files", 0, 0, 0, 0, "off" },
2409 { "repo-cksum", 0, 0, 0, 0, "on" },
2410 { "self-register", 0, 0, 0, 0, "off" },
2411 { "ssh-command", 0, 40, 0, 0, "" },
2412 { "ssl-ca-location", 0, 40, 0, 0, "" },
2413 { "ssl-identity", 0, 40, 0, 0, "" },
2414

Keyboard Shortcuts

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