Fossil SCM

Add the "unset" command for clearing settings.

drh 2008-05-10 17:22 trunk
Commit 418207989a55779c3226021079c046f8f296919b
1 file changed +23 -4
+23 -4
--- src/db.c
+++ src/db.c
@@ -941,10 +941,19 @@
941941
globalFlag ? "global_" : "", zName, zValue);
942942
if( globalFlag && g.repositoryOpen ){
943943
db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
944944
}
945945
db_end_transaction(0);
946
+}
947
+void db_unset(const char *zName, int globalFlag){
948
+ db_begin_transaction();
949
+ db_multi_exec("DELETE FROM %sconfig WHERE name=%Q",
950
+ globalFlag ? "global_" : "", zName);
951
+ if( globalFlag && g.repositoryOpen ){
952
+ db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
953
+ }
954
+ db_end_transaction(0);
946955
}
947956
int db_is_global(const char *zName){
948957
if( g.configOpen ){
949958
return db_exists("SELECT 1 FROM global_config WHERE name=%Q", zName);
950959
}else{
@@ -1063,15 +1072,19 @@
10631072
}
10641073
10651074
10661075
/*
10671076
** COMMAND: settings
1077
+** COMMAND: unset
10681078
** %fossil setting ?PROPERTY? ?VALUE? ?-global?
1079
+** %fossil unset PROPERTY ?-global?
1080
+**
1081
+** The "setting" command with no arguments lists all properties and their
1082
+** values. With just a property name it shows the value of that property.
1083
+** With a value argument it changes the property for the current repository.
10691084
**
1070
-** With no arguments, list all properties and their values. With just
1071
-** a property name, show the value of that property. With a value
1072
-** argument, change the property for the current repository.
1085
+** The "unset" command clears a property setting.
10731086
**
10741087
** autosync If enabled, automatically pull prior to
10751088
** commit or update and automatically push
10761089
** after commit or tag or branch creation.
10771090
**
@@ -1110,15 +1123,19 @@
11101123
"diff-command",
11111124
"gdiff-command",
11121125
};
11131126
int i;
11141127
int globalFlag = find_option("global","g",0)!=0;
1128
+ int unsetFlag = g.argv[1][0]=='u';
11151129
db_find_and_open_repository(0);
11161130
if( !g.repositoryOpen ){
11171131
db_open_config();
11181132
globalFlag = 1;
11191133
}
1134
+ if( unsetFlag && g.argc!=3 ){
1135
+ usage("PROPERTY ?-global?");
1136
+ }
11201137
if( g.argc==2 ){
11211138
for(i=0; i<sizeof(azName)/sizeof(azName[0]); i++){
11221139
print_setting(azName[i]);
11231140
}
11241141
}else if( g.argc==3 || g.argc==4 ){
@@ -1128,11 +1145,13 @@
11281145
if( strncmp(azName[i], zName, n)==0 ) break;
11291146
}
11301147
if( i>=sizeof(azName)/sizeof(azName[0]) ){
11311148
fossil_fatal("no such setting: %s", zName);
11321149
}
1133
- if( g.argc==4 ){
1150
+ if( unsetFlag ){
1151
+ db_unset(azName[i], globalFlag);
1152
+ }else if( g.argc==4 ){
11341153
db_set(azName[i], g.argv[3], globalFlag);
11351154
}else{
11361155
print_setting(azName[i]);
11371156
}
11381157
}else{
11391158
--- src/db.c
+++ src/db.c
@@ -941,10 +941,19 @@
941 globalFlag ? "global_" : "", zName, zValue);
942 if( globalFlag && g.repositoryOpen ){
943 db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
944 }
945 db_end_transaction(0);
 
 
 
 
 
 
 
 
 
946 }
947 int db_is_global(const char *zName){
948 if( g.configOpen ){
949 return db_exists("SELECT 1 FROM global_config WHERE name=%Q", zName);
950 }else{
@@ -1063,15 +1072,19 @@
1063 }
1064
1065
1066 /*
1067 ** COMMAND: settings
 
1068 ** %fossil setting ?PROPERTY? ?VALUE? ?-global?
 
 
 
 
 
1069 **
1070 ** With no arguments, list all properties and their values. With just
1071 ** a property name, show the value of that property. With a value
1072 ** argument, change the property for the current repository.
1073 **
1074 ** autosync If enabled, automatically pull prior to
1075 ** commit or update and automatically push
1076 ** after commit or tag or branch creation.
1077 **
@@ -1110,15 +1123,19 @@
1110 "diff-command",
1111 "gdiff-command",
1112 };
1113 int i;
1114 int globalFlag = find_option("global","g",0)!=0;
 
1115 db_find_and_open_repository(0);
1116 if( !g.repositoryOpen ){
1117 db_open_config();
1118 globalFlag = 1;
1119 }
 
 
 
1120 if( g.argc==2 ){
1121 for(i=0; i<sizeof(azName)/sizeof(azName[0]); i++){
1122 print_setting(azName[i]);
1123 }
1124 }else if( g.argc==3 || g.argc==4 ){
@@ -1128,11 +1145,13 @@
1128 if( strncmp(azName[i], zName, n)==0 ) break;
1129 }
1130 if( i>=sizeof(azName)/sizeof(azName[0]) ){
1131 fossil_fatal("no such setting: %s", zName);
1132 }
1133 if( g.argc==4 ){
 
 
1134 db_set(azName[i], g.argv[3], globalFlag);
1135 }else{
1136 print_setting(azName[i]);
1137 }
1138 }else{
1139
--- src/db.c
+++ src/db.c
@@ -941,10 +941,19 @@
941 globalFlag ? "global_" : "", zName, zValue);
942 if( globalFlag && g.repositoryOpen ){
943 db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
944 }
945 db_end_transaction(0);
946 }
947 void db_unset(const char *zName, int globalFlag){
948 db_begin_transaction();
949 db_multi_exec("DELETE FROM %sconfig WHERE name=%Q",
950 globalFlag ? "global_" : "", zName);
951 if( globalFlag && g.repositoryOpen ){
952 db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
953 }
954 db_end_transaction(0);
955 }
956 int db_is_global(const char *zName){
957 if( g.configOpen ){
958 return db_exists("SELECT 1 FROM global_config WHERE name=%Q", zName);
959 }else{
@@ -1063,15 +1072,19 @@
1072 }
1073
1074
1075 /*
1076 ** COMMAND: settings
1077 ** COMMAND: unset
1078 ** %fossil setting ?PROPERTY? ?VALUE? ?-global?
1079 ** %fossil unset PROPERTY ?-global?
1080 **
1081 ** The "setting" command with no arguments lists all properties and their
1082 ** values. With just a property name it shows the value of that property.
1083 ** With a value argument it changes the property for the current repository.
1084 **
1085 ** The "unset" command clears a property setting.
 
 
1086 **
1087 ** autosync If enabled, automatically pull prior to
1088 ** commit or update and automatically push
1089 ** after commit or tag or branch creation.
1090 **
@@ -1110,15 +1123,19 @@
1123 "diff-command",
1124 "gdiff-command",
1125 };
1126 int i;
1127 int globalFlag = find_option("global","g",0)!=0;
1128 int unsetFlag = g.argv[1][0]=='u';
1129 db_find_and_open_repository(0);
1130 if( !g.repositoryOpen ){
1131 db_open_config();
1132 globalFlag = 1;
1133 }
1134 if( unsetFlag && g.argc!=3 ){
1135 usage("PROPERTY ?-global?");
1136 }
1137 if( g.argc==2 ){
1138 for(i=0; i<sizeof(azName)/sizeof(azName[0]); i++){
1139 print_setting(azName[i]);
1140 }
1141 }else if( g.argc==3 || g.argc==4 ){
@@ -1128,11 +1145,13 @@
1145 if( strncmp(azName[i], zName, n)==0 ) break;
1146 }
1147 if( i>=sizeof(azName)/sizeof(azName[0]) ){
1148 fossil_fatal("no such setting: %s", zName);
1149 }
1150 if( unsetFlag ){
1151 db_unset(azName[i], globalFlag);
1152 }else if( g.argc==4 ){
1153 db_set(azName[i], g.argv[3], globalFlag);
1154 }else{
1155 print_setting(azName[i]);
1156 }
1157 }else{
1158

Keyboard Shortcuts

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