Fossil SCM

merge trunk

jan.nijtmans 2014-02-26 09:02 UTC mingw4x merge
Commit 645d57613d209d89b7d170b4353519c80326173d
+11 -11
--- auto.def
+++ auto.def
@@ -89,21 +89,10 @@
8989
if {[opt-bool static]} {
9090
# XXX: This will not work on all systems.
9191
define-append EXTRA_LDFLAGS -static
9292
}
9393
94
-# Check for zlib, using the given location if specified
95
-set zlibpath [opt-val with-zlib]
96
-if {$zlibpath ne ""} {
97
- cc-with [list -cflags "-I$zlibpath -L$zlibpath"]
98
- define-append EXTRA_CFLAGS -I$zlibpath
99
- define-append EXTRA_LDFLAGS -L$zlibpath
100
-}
101
-if {![cc-check-includes zlib.h] || ![cc-check-function-in-lib inflateEnd z]} {
102
- user-error "zlib not found please install it or specify the location with --with-zlib"
103
-}
104
-
10594
set tclpath [opt-val with-tcl]
10695
if {$tclpath ne ""} {
10796
set tclprivatestubs [opt-bool with-tcl-private-stubs]
10897
# Note parse-tclconfig-sh is in autosetup/local.tcl
10998
if {$tclpath eq "1"} {
@@ -226,10 +215,21 @@
226215
}
227216
} else {
228217
user-error "OpenSSL not found. Consider --with-openssl=none to disable HTTPS support"
229218
}
230219
}
220
+
221
+# Check for zlib, using the given location if specified
222
+set zlibpath [opt-val with-zlib]
223
+if {$zlibpath ne ""} {
224
+ cc-with [list -cflags "-I$zlibpath -L$zlibpath"]
225
+ define-append EXTRA_CFLAGS -I$zlibpath
226
+ define-append EXTRA_LDFLAGS -L$zlibpath
227
+}
228
+if {![cc-check-includes zlib.h] || ![cc-check-function-in-lib inflateEnd z]} {
229
+ user-error "zlib not found please install it or specify the location with --with-zlib"
230
+}
231231
232232
if {[opt-bool lineedit]} {
233233
# Need readline-compatible line editing
234234
cc-with {-includes stdio.h} {
235235
if {[cc-check-includes readline/readline.h] && [cc-check-function-in-lib readline readline]} {
236236
--- auto.def
+++ auto.def
@@ -89,21 +89,10 @@
89 if {[opt-bool static]} {
90 # XXX: This will not work on all systems.
91 define-append EXTRA_LDFLAGS -static
92 }
93
94 # Check for zlib, using the given location if specified
95 set zlibpath [opt-val with-zlib]
96 if {$zlibpath ne ""} {
97 cc-with [list -cflags "-I$zlibpath -L$zlibpath"]
98 define-append EXTRA_CFLAGS -I$zlibpath
99 define-append EXTRA_LDFLAGS -L$zlibpath
100 }
101 if {![cc-check-includes zlib.h] || ![cc-check-function-in-lib inflateEnd z]} {
102 user-error "zlib not found please install it or specify the location with --with-zlib"
103 }
104
105 set tclpath [opt-val with-tcl]
106 if {$tclpath ne ""} {
107 set tclprivatestubs [opt-bool with-tcl-private-stubs]
108 # Note parse-tclconfig-sh is in autosetup/local.tcl
109 if {$tclpath eq "1"} {
@@ -226,10 +215,21 @@
226 }
227 } else {
228 user-error "OpenSSL not found. Consider --with-openssl=none to disable HTTPS support"
229 }
230 }
 
 
 
 
 
 
 
 
 
 
 
231
232 if {[opt-bool lineedit]} {
233 # Need readline-compatible line editing
234 cc-with {-includes stdio.h} {
235 if {[cc-check-includes readline/readline.h] && [cc-check-function-in-lib readline readline]} {
236
--- auto.def
+++ auto.def
@@ -89,21 +89,10 @@
89 if {[opt-bool static]} {
90 # XXX: This will not work on all systems.
91 define-append EXTRA_LDFLAGS -static
92 }
93
 
 
 
 
 
 
 
 
 
 
 
94 set tclpath [opt-val with-tcl]
95 if {$tclpath ne ""} {
96 set tclprivatestubs [opt-bool with-tcl-private-stubs]
97 # Note parse-tclconfig-sh is in autosetup/local.tcl
98 if {$tclpath eq "1"} {
@@ -226,10 +215,21 @@
215 }
216 } else {
217 user-error "OpenSSL not found. Consider --with-openssl=none to disable HTTPS support"
218 }
219 }
220
221 # Check for zlib, using the given location if specified
222 set zlibpath [opt-val with-zlib]
223 if {$zlibpath ne ""} {
224 cc-with [list -cflags "-I$zlibpath -L$zlibpath"]
225 define-append EXTRA_CFLAGS -I$zlibpath
226 define-append EXTRA_LDFLAGS -L$zlibpath
227 }
228 if {![cc-check-includes zlib.h] || ![cc-check-function-in-lib inflateEnd z]} {
229 user-error "zlib not found please install it or specify the location with --with-zlib"
230 }
231
232 if {[opt-bool lineedit]} {
233 # Need readline-compatible line editing
234 cc-with {-includes stdio.h} {
235 if {[cc-check-includes readline/readline.h] && [cc-check-function-in-lib readline readline]} {
236
+22
--- src/add.c
+++ src/add.c
@@ -221,19 +221,24 @@
221221
** The --ignore and --clean options are comma-separate lists of glob patterns
222222
** for files to be excluded. Example: '*.o,*.obj,*.exe' If the --ignore
223223
** option does not appear on the command line then the "ignore-glob" setting
224224
** is used. If the --clean option does not appear on the command line then
225225
** the "clean-glob" setting is used.
226
+**
227
+** If files are attempted to be added explicitly on the command line which
228
+** match "ignore-glob", a confirmation is asked first. This can be prevented
229
+** using the -f|--force option.
226230
**
227231
** The --case-sensitive option determines whether or not filenames should
228232
** be treated case sensitive or not. If the option is not given, the default
229233
** depends on the global setting, or the operating system default, if not set.
230234
**
231235
** Options:
232236
**
233237
** --case-sensitive <BOOL> override case-sensitive setting
234238
** --dotfiles include files beginning with a dot (".")
239
+** -f|--force Add files without prompting
235240
** --ignore <CSG> ignore files matching patterns from the
236241
** comma separated list of glob patterns.
237242
** --clean <CSG> also ignore files matching patterns from
238243
** the comma separated list of glob patterns.
239244
**
@@ -245,13 +250,15 @@
245250
int nRoot; /* Full path characters in g.zLocalRoot */
246251
const char *zCleanFlag; /* The --clean option or clean-glob setting */
247252
const char *zIgnoreFlag; /* The --ignore option or ignore-glob setting */
248253
Glob *pIgnore, *pClean; /* Ignore everything matching the glob patterns */
249254
unsigned scanFlags = 0; /* Flags passed to vfile_scan() */
255
+ int forceFlag;
250256
251257
zCleanFlag = find_option("clean",0,1);
252258
zIgnoreFlag = find_option("ignore",0,1);
259
+ forceFlag = find_option("force","f",0)!=0;
253260
if( find_option("dotfiles",0,0)!=0 ) scanFlags |= SCAN_ALL;
254261
capture_case_sensitive_option();
255262
db_must_be_within_tree();
256263
if( zCleanFlag==0 ){
257264
zCleanFlag = db_get("clean-glob", 0);
@@ -287,10 +294,25 @@
287294
fossil_warning("not found: %s", zName);
288295
}else if( file_access(zName, R_OK) ){
289296
fossil_fatal("cannot open %s", zName);
290297
}else{
291298
char *zTreeName = &zName[nRoot];
299
+ if( !forceFlag && glob_match(pIgnore, zTreeName) ){
300
+ Blob ans;
301
+ char cReply;
302
+ char *prompt = mprintf("file \"%s\" matches \"ignore-glob\". "
303
+ "Add it (a=all/y/N)? ", zTreeName);
304
+ prompt_user(prompt, &ans);
305
+ cReply = blob_str(&ans)[0];
306
+ blob_reset(&ans);
307
+ if( cReply=='a' || cReply=='A' ){
308
+ forceFlag = 1;
309
+ }else if( cReply!='y' && cReply!='Y' ){
310
+ blob_reset(&fullName);
311
+ continue;
312
+ }
313
+ }
292314
db_multi_exec(
293315
"INSERT OR IGNORE INTO sfile(x) VALUES(%Q)",
294316
zTreeName
295317
);
296318
}
297319
--- src/add.c
+++ src/add.c
@@ -221,19 +221,24 @@
221 ** The --ignore and --clean options are comma-separate lists of glob patterns
222 ** for files to be excluded. Example: '*.o,*.obj,*.exe' If the --ignore
223 ** option does not appear on the command line then the "ignore-glob" setting
224 ** is used. If the --clean option does not appear on the command line then
225 ** the "clean-glob" setting is used.
 
 
 
 
226 **
227 ** The --case-sensitive option determines whether or not filenames should
228 ** be treated case sensitive or not. If the option is not given, the default
229 ** depends on the global setting, or the operating system default, if not set.
230 **
231 ** Options:
232 **
233 ** --case-sensitive <BOOL> override case-sensitive setting
234 ** --dotfiles include files beginning with a dot (".")
 
235 ** --ignore <CSG> ignore files matching patterns from the
236 ** comma separated list of glob patterns.
237 ** --clean <CSG> also ignore files matching patterns from
238 ** the comma separated list of glob patterns.
239 **
@@ -245,13 +250,15 @@
245 int nRoot; /* Full path characters in g.zLocalRoot */
246 const char *zCleanFlag; /* The --clean option or clean-glob setting */
247 const char *zIgnoreFlag; /* The --ignore option or ignore-glob setting */
248 Glob *pIgnore, *pClean; /* Ignore everything matching the glob patterns */
249 unsigned scanFlags = 0; /* Flags passed to vfile_scan() */
 
250
251 zCleanFlag = find_option("clean",0,1);
252 zIgnoreFlag = find_option("ignore",0,1);
 
253 if( find_option("dotfiles",0,0)!=0 ) scanFlags |= SCAN_ALL;
254 capture_case_sensitive_option();
255 db_must_be_within_tree();
256 if( zCleanFlag==0 ){
257 zCleanFlag = db_get("clean-glob", 0);
@@ -287,10 +294,25 @@
287 fossil_warning("not found: %s", zName);
288 }else if( file_access(zName, R_OK) ){
289 fossil_fatal("cannot open %s", zName);
290 }else{
291 char *zTreeName = &zName[nRoot];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
292 db_multi_exec(
293 "INSERT OR IGNORE INTO sfile(x) VALUES(%Q)",
294 zTreeName
295 );
296 }
297
--- src/add.c
+++ src/add.c
@@ -221,19 +221,24 @@
221 ** The --ignore and --clean options are comma-separate lists of glob patterns
222 ** for files to be excluded. Example: '*.o,*.obj,*.exe' If the --ignore
223 ** option does not appear on the command line then the "ignore-glob" setting
224 ** is used. If the --clean option does not appear on the command line then
225 ** the "clean-glob" setting is used.
226 **
227 ** If files are attempted to be added explicitly on the command line which
228 ** match "ignore-glob", a confirmation is asked first. This can be prevented
229 ** using the -f|--force option.
230 **
231 ** The --case-sensitive option determines whether or not filenames should
232 ** be treated case sensitive or not. If the option is not given, the default
233 ** depends on the global setting, or the operating system default, if not set.
234 **
235 ** Options:
236 **
237 ** --case-sensitive <BOOL> override case-sensitive setting
238 ** --dotfiles include files beginning with a dot (".")
239 ** -f|--force Add files without prompting
240 ** --ignore <CSG> ignore files matching patterns from the
241 ** comma separated list of glob patterns.
242 ** --clean <CSG> also ignore files matching patterns from
243 ** the comma separated list of glob patterns.
244 **
@@ -245,13 +250,15 @@
250 int nRoot; /* Full path characters in g.zLocalRoot */
251 const char *zCleanFlag; /* The --clean option or clean-glob setting */
252 const char *zIgnoreFlag; /* The --ignore option or ignore-glob setting */
253 Glob *pIgnore, *pClean; /* Ignore everything matching the glob patterns */
254 unsigned scanFlags = 0; /* Flags passed to vfile_scan() */
255 int forceFlag;
256
257 zCleanFlag = find_option("clean",0,1);
258 zIgnoreFlag = find_option("ignore",0,1);
259 forceFlag = find_option("force","f",0)!=0;
260 if( find_option("dotfiles",0,0)!=0 ) scanFlags |= SCAN_ALL;
261 capture_case_sensitive_option();
262 db_must_be_within_tree();
263 if( zCleanFlag==0 ){
264 zCleanFlag = db_get("clean-glob", 0);
@@ -287,10 +294,25 @@
294 fossil_warning("not found: %s", zName);
295 }else if( file_access(zName, R_OK) ){
296 fossil_fatal("cannot open %s", zName);
297 }else{
298 char *zTreeName = &zName[nRoot];
299 if( !forceFlag && glob_match(pIgnore, zTreeName) ){
300 Blob ans;
301 char cReply;
302 char *prompt = mprintf("file \"%s\" matches \"ignore-glob\". "
303 "Add it (a=all/y/N)? ", zTreeName);
304 prompt_user(prompt, &ans);
305 cReply = blob_str(&ans)[0];
306 blob_reset(&ans);
307 if( cReply=='a' || cReply=='A' ){
308 forceFlag = 1;
309 }else if( cReply!='y' && cReply!='Y' ){
310 blob_reset(&fullName);
311 continue;
312 }
313 }
314 db_multi_exec(
315 "INSERT OR IGNORE INTO sfile(x) VALUES(%Q)",
316 zTreeName
317 );
318 }
319
--- src/branch.c
+++ src/branch.c
@@ -140,11 +140,10 @@
140140
md5sum_blob(&branch, &mcksum);
141141
blob_appendf(&branch, "Z %b\n", &mcksum);
142142
if( !noSign && clearsign(&branch, &branch) ){
143143
Blob ans;
144144
char cReply;
145
- blob_zero(&ans);
146145
prompt_user("unable to sign manifest. continue (y/N)? ", &ans);
147146
cReply = blob_str(&ans)[0];
148147
if( cReply!='y' && cReply!='Y'){
149148
db_end_transaction(1);
150149
fossil_exit(1);
151150
--- src/branch.c
+++ src/branch.c
@@ -140,11 +140,10 @@
140 md5sum_blob(&branch, &mcksum);
141 blob_appendf(&branch, "Z %b\n", &mcksum);
142 if( !noSign && clearsign(&branch, &branch) ){
143 Blob ans;
144 char cReply;
145 blob_zero(&ans);
146 prompt_user("unable to sign manifest. continue (y/N)? ", &ans);
147 cReply = blob_str(&ans)[0];
148 if( cReply!='y' && cReply!='Y'){
149 db_end_transaction(1);
150 fossil_exit(1);
151
--- src/branch.c
+++ src/branch.c
@@ -140,11 +140,10 @@
140 md5sum_blob(&branch, &mcksum);
141 blob_appendf(&branch, "Z %b\n", &mcksum);
142 if( !noSign && clearsign(&branch, &branch) ){
143 Blob ans;
144 char cReply;
 
145 prompt_user("unable to sign manifest. continue (y/N)? ", &ans);
146 cReply = blob_str(&ans)[0];
147 if( cReply!='y' && cReply!='Y'){
148 db_end_transaction(1);
149 fossil_exit(1);
150
+3 -10
--- src/checkin.c
+++ src/checkin.c
@@ -600,11 +600,10 @@
600600
if( !allFileFlag && !dryRunFlag && !glob_match(pClean, zName+nRoot) ){
601601
Blob ans;
602602
char cReply;
603603
char *prompt = mprintf("Remove unmanaged file \"%s\" (a=all/y/N)? ",
604604
zName+nRoot);
605
- blob_zero(&ans);
606605
prompt_user(prompt, &ans);
607606
cReply = blob_str(&ans)[0];
608607
if( cReply=='a' || cReply=='A' ){
609608
allFileFlag = 1;
610609
}else if( cReply!='y' && cReply!='Y' ){
@@ -642,11 +641,10 @@
642641
if( !allDirFlag && !dryRunFlag && !glob_match(pClean, zName+nRoot) ){
643642
Blob ans;
644643
char cReply;
645644
char *prompt = mprintf("Remove empty directory \"%s\" (a=all/y/N)? ",
646645
zName+nRoot);
647
- blob_zero(&ans);
648646
prompt_user(prompt, &ans);
649647
cReply = blob_str(&ans)[0];
650648
if( cReply=='a' || cReply=='A' ){
651649
allDirFlag = 1;
652650
}else if( cReply!='y' && cReply!='Y' ){
@@ -1288,11 +1286,10 @@
12881286
}
12891287
zWarning = "Unicode";
12901288
zDisable = "\"encoding-glob\" setting";
12911289
}
12921290
file_relative_name(zFilename, &fname, 0);
1293
- blob_zero(&ans);
12941291
zMsg = mprintf(
12951292
"%s contains %s. Use --no-warnings or the %s to disable this warning.\n"
12961293
"Commit anyhow (a=all/%sy/N)? ",
12971294
blob_str(&fname), zWarning, zDisable, zConvert);
12981295
prompt_user(zMsg, &ans);
@@ -1520,20 +1517,21 @@
15201517
forceBaseline = 1;
15211518
}
15221519
15231520
/* Get the ID of the parent manifest artifact */
15241521
vid = db_lget_int("checkout", 0);
1525
- if( content_is_private(vid) ){
1522
+ if( vid==0 ){
1523
+ useCksum = 1;
1524
+ }else if( content_is_private(vid) ){
15261525
g.markPrivate = 1;
15271526
}
15281527
15291528
/*
15301529
** Autosync if autosync is enabled and this is not a private check-in.
15311530
*/
15321531
if( !g.markPrivate ){
15331532
if( autosync(SYNC_PULL) ){
1534
- blob_zero(&ans);
15351533
prompt_user("continue in spite of sync failure (y/N)? ", &ans);
15361534
cReply = blob_str(&ans)[0];
15371535
if( cReply!='y' && cReply!='Y' ){
15381536
fossil_exit(1);
15391537
}
@@ -1542,11 +1540,10 @@
15421540
15431541
/* Require confirmation to continue with the check-in if there is
15441542
** clock skew
15451543
*/
15461544
if( g.clockSkewSeen ){
1547
- blob_zero(&ans);
15481545
prompt_user("continue in spite of time skew (y/N)? ", &ans);
15491546
cReply = blob_str(&ans)[0];
15501547
if( cReply!='y' && cReply!='Y' ){
15511548
fossil_exit(1);
15521549
}
@@ -1561,11 +1558,10 @@
15611558
** array is allocated to contain the "id" field from the vfile table
15621559
** for each file to be committed. Or, if aCommitFile is NULL, all files
15631560
** should be committed.
15641561
*/
15651562
if( select_commit_files() ){
1566
- blob_zero(&ans);
15671563
prompt_user("continue (y/N)? ", &ans);
15681564
cReply = blob_str(&ans)[0];
15691565
if( cReply!='y' && cReply!='Y' ) fossil_exit(1);;
15701566
}
15711567
isAMerge = db_exists("SELECT 1 FROM vmerge WHERE id=0 OR id<-2");
@@ -1662,20 +1658,18 @@
16621658
blob_zero(&comment);
16631659
}else{
16641660
char *zInit = db_text(0, "SELECT value FROM vvar WHERE name='ci-comment'");
16651661
prepare_commit_comment(&comment, zInit, &sCiInfo, vid);
16661662
if( zInit && zInit[0] && fossil_strcmp(zInit, blob_str(&comment))==0 ){
1667
- blob_zero(&ans);
16681663
prompt_user("unchanged check-in comment. continue (y/N)? ", &ans);
16691664
cReply = blob_str(&ans)[0];
16701665
if( cReply!='y' && cReply!='Y' ) fossil_exit(1);;
16711666
}
16721667
free(zInit);
16731668
}
16741669
if( blob_size(&comment)==0 ){
16751670
if( !dryRunFlag ){
1676
- blob_zero(&ans);
16771671
prompt_user("empty check-in comment. continue (y/N)? ", &ans);
16781672
cReply = blob_str(&ans)[0];
16791673
if( cReply!='y' && cReply!='Y' ){
16801674
fossil_exit(1);
16811675
}
@@ -1804,11 +1798,10 @@
18041798
}else if( forceDelta ){
18051799
fossil_fatal("unable to find a baseline-manifest for the delta");
18061800
}
18071801
}
18081802
if( !noSign && !g.markPrivate && clearsign(&manifest, &manifest) ){
1809
- blob_zero(&ans);
18101803
prompt_user("unable to sign manifest. continue (y/N)? ", &ans);
18111804
cReply = blob_str(&ans)[0];
18121805
if( cReply!='y' && cReply!='Y' ){
18131806
fossil_exit(1);
18141807
}
18151808
--- src/checkin.c
+++ src/checkin.c
@@ -600,11 +600,10 @@
600 if( !allFileFlag && !dryRunFlag && !glob_match(pClean, zName+nRoot) ){
601 Blob ans;
602 char cReply;
603 char *prompt = mprintf("Remove unmanaged file \"%s\" (a=all/y/N)? ",
604 zName+nRoot);
605 blob_zero(&ans);
606 prompt_user(prompt, &ans);
607 cReply = blob_str(&ans)[0];
608 if( cReply=='a' || cReply=='A' ){
609 allFileFlag = 1;
610 }else if( cReply!='y' && cReply!='Y' ){
@@ -642,11 +641,10 @@
642 if( !allDirFlag && !dryRunFlag && !glob_match(pClean, zName+nRoot) ){
643 Blob ans;
644 char cReply;
645 char *prompt = mprintf("Remove empty directory \"%s\" (a=all/y/N)? ",
646 zName+nRoot);
647 blob_zero(&ans);
648 prompt_user(prompt, &ans);
649 cReply = blob_str(&ans)[0];
650 if( cReply=='a' || cReply=='A' ){
651 allDirFlag = 1;
652 }else if( cReply!='y' && cReply!='Y' ){
@@ -1288,11 +1286,10 @@
1288 }
1289 zWarning = "Unicode";
1290 zDisable = "\"encoding-glob\" setting";
1291 }
1292 file_relative_name(zFilename, &fname, 0);
1293 blob_zero(&ans);
1294 zMsg = mprintf(
1295 "%s contains %s. Use --no-warnings or the %s to disable this warning.\n"
1296 "Commit anyhow (a=all/%sy/N)? ",
1297 blob_str(&fname), zWarning, zDisable, zConvert);
1298 prompt_user(zMsg, &ans);
@@ -1520,20 +1517,21 @@
1520 forceBaseline = 1;
1521 }
1522
1523 /* Get the ID of the parent manifest artifact */
1524 vid = db_lget_int("checkout", 0);
1525 if( content_is_private(vid) ){
 
 
1526 g.markPrivate = 1;
1527 }
1528
1529 /*
1530 ** Autosync if autosync is enabled and this is not a private check-in.
1531 */
1532 if( !g.markPrivate ){
1533 if( autosync(SYNC_PULL) ){
1534 blob_zero(&ans);
1535 prompt_user("continue in spite of sync failure (y/N)? ", &ans);
1536 cReply = blob_str(&ans)[0];
1537 if( cReply!='y' && cReply!='Y' ){
1538 fossil_exit(1);
1539 }
@@ -1542,11 +1540,10 @@
1542
1543 /* Require confirmation to continue with the check-in if there is
1544 ** clock skew
1545 */
1546 if( g.clockSkewSeen ){
1547 blob_zero(&ans);
1548 prompt_user("continue in spite of time skew (y/N)? ", &ans);
1549 cReply = blob_str(&ans)[0];
1550 if( cReply!='y' && cReply!='Y' ){
1551 fossil_exit(1);
1552 }
@@ -1561,11 +1558,10 @@
1561 ** array is allocated to contain the "id" field from the vfile table
1562 ** for each file to be committed. Or, if aCommitFile is NULL, all files
1563 ** should be committed.
1564 */
1565 if( select_commit_files() ){
1566 blob_zero(&ans);
1567 prompt_user("continue (y/N)? ", &ans);
1568 cReply = blob_str(&ans)[0];
1569 if( cReply!='y' && cReply!='Y' ) fossil_exit(1);;
1570 }
1571 isAMerge = db_exists("SELECT 1 FROM vmerge WHERE id=0 OR id<-2");
@@ -1662,20 +1658,18 @@
1662 blob_zero(&comment);
1663 }else{
1664 char *zInit = db_text(0, "SELECT value FROM vvar WHERE name='ci-comment'");
1665 prepare_commit_comment(&comment, zInit, &sCiInfo, vid);
1666 if( zInit && zInit[0] && fossil_strcmp(zInit, blob_str(&comment))==0 ){
1667 blob_zero(&ans);
1668 prompt_user("unchanged check-in comment. continue (y/N)? ", &ans);
1669 cReply = blob_str(&ans)[0];
1670 if( cReply!='y' && cReply!='Y' ) fossil_exit(1);;
1671 }
1672 free(zInit);
1673 }
1674 if( blob_size(&comment)==0 ){
1675 if( !dryRunFlag ){
1676 blob_zero(&ans);
1677 prompt_user("empty check-in comment. continue (y/N)? ", &ans);
1678 cReply = blob_str(&ans)[0];
1679 if( cReply!='y' && cReply!='Y' ){
1680 fossil_exit(1);
1681 }
@@ -1804,11 +1798,10 @@
1804 }else if( forceDelta ){
1805 fossil_fatal("unable to find a baseline-manifest for the delta");
1806 }
1807 }
1808 if( !noSign && !g.markPrivate && clearsign(&manifest, &manifest) ){
1809 blob_zero(&ans);
1810 prompt_user("unable to sign manifest. continue (y/N)? ", &ans);
1811 cReply = blob_str(&ans)[0];
1812 if( cReply!='y' && cReply!='Y' ){
1813 fossil_exit(1);
1814 }
1815
--- src/checkin.c
+++ src/checkin.c
@@ -600,11 +600,10 @@
600 if( !allFileFlag && !dryRunFlag && !glob_match(pClean, zName+nRoot) ){
601 Blob ans;
602 char cReply;
603 char *prompt = mprintf("Remove unmanaged file \"%s\" (a=all/y/N)? ",
604 zName+nRoot);
 
605 prompt_user(prompt, &ans);
606 cReply = blob_str(&ans)[0];
607 if( cReply=='a' || cReply=='A' ){
608 allFileFlag = 1;
609 }else if( cReply!='y' && cReply!='Y' ){
@@ -642,11 +641,10 @@
641 if( !allDirFlag && !dryRunFlag && !glob_match(pClean, zName+nRoot) ){
642 Blob ans;
643 char cReply;
644 char *prompt = mprintf("Remove empty directory \"%s\" (a=all/y/N)? ",
645 zName+nRoot);
 
646 prompt_user(prompt, &ans);
647 cReply = blob_str(&ans)[0];
648 if( cReply=='a' || cReply=='A' ){
649 allDirFlag = 1;
650 }else if( cReply!='y' && cReply!='Y' ){
@@ -1288,11 +1286,10 @@
1286 }
1287 zWarning = "Unicode";
1288 zDisable = "\"encoding-glob\" setting";
1289 }
1290 file_relative_name(zFilename, &fname, 0);
 
1291 zMsg = mprintf(
1292 "%s contains %s. Use --no-warnings or the %s to disable this warning.\n"
1293 "Commit anyhow (a=all/%sy/N)? ",
1294 blob_str(&fname), zWarning, zDisable, zConvert);
1295 prompt_user(zMsg, &ans);
@@ -1520,20 +1517,21 @@
1517 forceBaseline = 1;
1518 }
1519
1520 /* Get the ID of the parent manifest artifact */
1521 vid = db_lget_int("checkout", 0);
1522 if( vid==0 ){
1523 useCksum = 1;
1524 }else if( content_is_private(vid) ){
1525 g.markPrivate = 1;
1526 }
1527
1528 /*
1529 ** Autosync if autosync is enabled and this is not a private check-in.
1530 */
1531 if( !g.markPrivate ){
1532 if( autosync(SYNC_PULL) ){
 
1533 prompt_user("continue in spite of sync failure (y/N)? ", &ans);
1534 cReply = blob_str(&ans)[0];
1535 if( cReply!='y' && cReply!='Y' ){
1536 fossil_exit(1);
1537 }
@@ -1542,11 +1540,10 @@
1540
1541 /* Require confirmation to continue with the check-in if there is
1542 ** clock skew
1543 */
1544 if( g.clockSkewSeen ){
 
1545 prompt_user("continue in spite of time skew (y/N)? ", &ans);
1546 cReply = blob_str(&ans)[0];
1547 if( cReply!='y' && cReply!='Y' ){
1548 fossil_exit(1);
1549 }
@@ -1561,11 +1558,10 @@
1558 ** array is allocated to contain the "id" field from the vfile table
1559 ** for each file to be committed. Or, if aCommitFile is NULL, all files
1560 ** should be committed.
1561 */
1562 if( select_commit_files() ){
 
1563 prompt_user("continue (y/N)? ", &ans);
1564 cReply = blob_str(&ans)[0];
1565 if( cReply!='y' && cReply!='Y' ) fossil_exit(1);;
1566 }
1567 isAMerge = db_exists("SELECT 1 FROM vmerge WHERE id=0 OR id<-2");
@@ -1662,20 +1658,18 @@
1658 blob_zero(&comment);
1659 }else{
1660 char *zInit = db_text(0, "SELECT value FROM vvar WHERE name='ci-comment'");
1661 prepare_commit_comment(&comment, zInit, &sCiInfo, vid);
1662 if( zInit && zInit[0] && fossil_strcmp(zInit, blob_str(&comment))==0 ){
 
1663 prompt_user("unchanged check-in comment. continue (y/N)? ", &ans);
1664 cReply = blob_str(&ans)[0];
1665 if( cReply!='y' && cReply!='Y' ) fossil_exit(1);;
1666 }
1667 free(zInit);
1668 }
1669 if( blob_size(&comment)==0 ){
1670 if( !dryRunFlag ){
 
1671 prompt_user("empty check-in comment. continue (y/N)? ", &ans);
1672 cReply = blob_str(&ans)[0];
1673 if( cReply!='y' && cReply!='Y' ){
1674 fossil_exit(1);
1675 }
@@ -1804,11 +1798,10 @@
1798 }else if( forceDelta ){
1799 fossil_fatal("unable to find a baseline-manifest for the delta");
1800 }
1801 }
1802 if( !noSign && !g.markPrivate && clearsign(&manifest, &manifest) ){
 
1803 prompt_user("unable to sign manifest. continue (y/N)? ", &ans);
1804 cReply = blob_str(&ans)[0];
1805 if( cReply!='y' && cReply!='Y' ){
1806 fossil_exit(1);
1807 }
1808
+69 -60
--- src/db.c
+++ src/db.c
@@ -715,11 +715,11 @@
715715
*/
716716
LOCAL sqlite3 *db_open(const char *zDbName){
717717
int rc;
718718
sqlite3 *db;
719719
720
-#if defined(__CYGWIN__)
720
+#if defined(__CYGWIN__) && !defined(USE_SYSTEM_SQLITE)
721721
zDbName = fossil_utf8_to_filename(zDbName);
722722
#endif
723723
if( g.fSqlTrace ) fossil_trace("-- sqlite3_open: [%s]\n", zDbName);
724724
rc = sqlite3_open_v2(
725725
zDbName, &db,
@@ -1989,23 +1989,28 @@
19891989
** If VERSION is specified then that version is checked out. Otherwise
19901990
** the latest version is checked out. No files other than "manifest"
19911991
** and "manifest.uuid" are modified if the --keep option is present.
19921992
**
19931993
** Options:
1994
+** --empty Initialize checkout as being empty, but still connected
1995
+** with the local repository. If you commit this checkout,
1996
+** it will become a new "initial" commit in the repository.
19941997
** --keep Only modify the manifest and manifest.uuid files
19951998
** --nested Allow opening a repository inside an opened checkout
19961999
**
19972000
** See also: close
19982001
*/
19992002
void cmd_open(void){
2003
+ int emptyFlag;
20002004
int keepFlag;
20012005
int allowNested;
20022006
char **oldArgv;
20032007
int oldArgc;
20042008
static char *azNewArgv[] = { 0, "checkout", "--prompt", 0, 0, 0 };
20052009
20062010
url_proxy_options();
2011
+ emptyFlag = find_option("empty",0,0)!=0;
20072012
keepFlag = find_option("keep",0,0)!=0;
20082013
allowNested = find_option("nested",0,0)!=0;
20092014
if( g.argc!=3 && g.argc!=4 ){
20102015
usage("REPOSITORY-FILENAME ?VERSION?");
20112016
}
@@ -2030,22 +2035,24 @@
20302035
db_lset_int("checkout", 0);
20312036
oldArgv = g.argv;
20322037
oldArgc = g.argc;
20332038
azNewArgv[0] = g.argv[0];
20342039
g.argv = azNewArgv;
2035
- g.argc = 3;
2036
- if( oldArgc==4 ){
2037
- azNewArgv[g.argc-1] = oldArgv[3];
2038
- }else if( !db_exists("SELECT 1 FROM event WHERE type='ci'") ){
2039
- azNewArgv[g.argc-1] = "--latest";
2040
- }else{
2041
- azNewArgv[g.argc-1] = db_get("main-branch", "trunk");
2042
- }
2043
- if( keepFlag ){
2044
- azNewArgv[g.argc++] = "--keep";
2045
- }
2046
- checkout_cmd();
2040
+ if( !emptyFlag){
2041
+ g.argc = 3;
2042
+ if( oldArgc==4 ){
2043
+ azNewArgv[g.argc-1] = oldArgv[3];
2044
+ }else if( !db_exists("SELECT 1 FROM event WHERE type='ci'") ){
2045
+ azNewArgv[g.argc-1] = "--latest";
2046
+ }else{
2047
+ azNewArgv[g.argc-1] = db_get("main-branch", "trunk");
2048
+ }
2049
+ if( keepFlag ){
2050
+ azNewArgv[g.argc++] = "--keep";
2051
+ }
2052
+ checkout_cmd();
2053
+ }
20472054
g.argc = 2;
20482055
info_cmd();
20492056
}
20502057
20512058
/*
@@ -2101,66 +2108,68 @@
21012108
*/
21022109
#if INTERFACE
21032110
struct stControlSettings {
21042111
char const *name; /* Name of the setting */
21052112
char const *var; /* Internal variable name used by db_set() */
2106
- int width; /* Width of display. 0 for boolean values */
2113
+ int width; /* Width of display. 0 for boolean values. */
21072114
int versionable; /* Is this setting versionable? */
2115
+ int forceTextArea; /* Force using a text area for display? */
21082116
char const *def; /* Default value */
21092117
};
21102118
#endif /* INTERFACE */
21112119
struct stControlSettings const ctrlSettings[] = {
2112
- { "access-log", 0, 0, 0, "off" },
2113
- { "allow-symlinks",0, 0, 1, "off" },
2114
- { "auto-captcha", "autocaptcha", 0, 0, "on" },
2115
- { "auto-hyperlink",0, 0, 0, "on", },
2116
- { "auto-shun", 0, 0, 0, "on" },
2117
- { "autosync", 0, 0, 0, "on" },
2118
- { "binary-glob", 0, 40, 1, "" },
2119
- { "clearsign", 0, 0, 0, "off" },
2120
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(__DARWIN__) || defined(__APPLE__)
2121
- { "case-sensitive",0, 0, 0, "off" },
2120
+ { "access-log", 0, 0, 0, 0, "off" },
2121
+ { "allow-symlinks", 0, 0, 1, 0, "off" },
2122
+ { "auto-captcha", "autocaptcha", 0, 0, 0, "on" },
2123
+ { "auto-hyperlink", 0, 0, 0, 0, "on", },
2124
+ { "auto-shun", 0, 0, 0, 0, "on" },
2125
+ { "autosync", 0, 0, 0, 0, "on" },
2126
+ { "binary-glob", 0, 40, 1, 0, "" },
2127
+ { "clearsign", 0, 0, 0, 0, "off" },
2128
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(__DARWIN__) || \
2129
+ defined(__APPLE__)
2130
+ { "case-sensitive", 0, 0, 0, 0, "off" },
21222131
#else
2123
- { "case-sensitive",0, 0, 0, "on" },
2132
+ { "case-sensitive", 0, 0, 0, 0, "on" },
21242133
#endif
2125
- { "clean-glob", 0, 40, 1, "" },
2126
- { "crnl-glob", 0, 40, 1, "" },
2127
- { "default-perms", 0, 16, 0, "u" },
2128
- { "diff-binary", 0, 0, 0, "on" },
2129
- { "diff-command", 0, 40, 0, "" },
2130
- { "dont-push", 0, 0, 0, "off" },
2131
- { "editor", 0, 32, 0, "" },
2132
- { "empty-dirs", 0, 40, 1, "" },
2133
- { "encoding-glob", 0, 40, 1, "" },
2134
- { "gdiff-command", 0, 40, 0, "gdiff" },
2135
- { "gmerge-command",0, 40, 0, "" },
2136
- { "http-port", 0, 16, 0, "8080" },
2137
- { "https-login", 0, 0, 0, "off" },
2138
- { "ignore-glob", 0, 40, 1, "" },
2139
- { "keep-glob", 0, 40, 1, "" },
2140
- { "localauth", 0, 0, 0, "off" },
2141
- { "main-branch", 0, 40, 0, "trunk" },
2142
- { "manifest", 0, 0, 1, "off" },
2143
- { "max-upload", 0, 25, 0, "250000" },
2144
- { "mtime-changes", 0, 0, 0, "on" },
2145
- { "pgp-command", 0, 40, 0, "gpg --clearsign -o " },
2146
- { "proxy", 0, 32, 0, "off" },
2147
- { "relative-paths",0, 0, 0, "on" },
2148
- { "repo-cksum", 0, 0, 0, "on" },
2149
- { "self-register", 0, 0, 0, "off" },
2150
- { "ssh-command", 0, 40, 0, "" },
2151
- { "ssl-ca-location",0, 40, 0, "" },
2152
- { "ssl-identity", 0, 40, 0, "" },
2134
+ { "clean-glob", 0, 40, 1, 0, "" },
2135
+ { "crnl-glob", 0, 40, 1, 0, "" },
2136
+ { "default-perms", 0, 16, 0, 0, "u" },
2137
+ { "diff-binary", 0, 0, 0, 0, "on" },
2138
+ { "diff-command", 0, 40, 0, 0, "" },
2139
+ { "dont-push", 0, 0, 0, 0, "off" },
2140
+ { "editor", 0, 32, 0, 0, "" },
2141
+ { "empty-dirs", 0, 40, 1, 0, "" },
2142
+ { "encoding-glob", 0, 40, 1, 0, "" },
2143
+ { "gdiff-command", 0, 40, 0, 0, "gdiff" },
2144
+ { "gmerge-command", 0, 40, 0, 0, "" },
2145
+ { "http-port", 0, 16, 0, 0, "8080" },
2146
+ { "https-login", 0, 0, 0, 0, "off" },
2147
+ { "ignore-glob", 0, 40, 1, 0, "" },
2148
+ { "keep-glob", 0, 40, 1, 0, "" },
2149
+ { "localauth", 0, 0, 0, 0, "off" },
2150
+ { "main-branch", 0, 40, 0, 0, "trunk" },
2151
+ { "manifest", 0, 0, 1, 0, "off" },
2152
+ { "max-upload", 0, 25, 0, 0, "250000" },
2153
+ { "mtime-changes", 0, 0, 0, 0, "on" },
2154
+ { "pgp-command", 0, 40, 0, 0, "gpg --clearsign -o " },
2155
+ { "proxy", 0, 32, 0, 0, "off" },
2156
+ { "relative-paths", 0, 0, 0, 0, "on" },
2157
+ { "repo-cksum", 0, 0, 0, 0, "on" },
2158
+ { "self-register", 0, 0, 0, 0, "off" },
2159
+ { "ssh-command", 0, 40, 0, 0, "" },
2160
+ { "ssl-ca-location", 0, 40, 0, 0, "" },
2161
+ { "ssl-identity", 0, 40, 0, 0, "" },
21532162
#ifdef FOSSIL_ENABLE_TCL
2154
- { "tcl", 0, 0, 0, "off" },
2155
- { "tcl-setup", 0, 40, 0, "" },
2163
+ { "tcl", 0, 0, 0, 0, "off" },
2164
+ { "tcl-setup", 0, 40, 0, 1, "" },
21562165
#endif
2157
- { "th1-setup", 0, 40, 0, "" },
2158
- { "th1-uri-regexp",0, 40, 0, "" },
2159
- { "web-browser", 0, 32, 0, "" },
2160
- { "white-foreground", 0, 0, 0, "off" },
2161
- { 0,0,0,0,0 }
2166
+ { "th1-setup", 0, 40, 0, 1, "" },
2167
+ { "th1-uri-regexp", 0, 40, 0, 0, "" },
2168
+ { "web-browser", 0, 32, 0, 0, "" },
2169
+ { "white-foreground", 0, 0, 0, 0, "off" },
2170
+ { 0,0,0,0,0,0 }
21622171
};
21632172
21642173
/*
21652174
** COMMAND: settings
21662175
** COMMAND: unset*
21672176
--- src/db.c
+++ src/db.c
@@ -715,11 +715,11 @@
715 */
716 LOCAL sqlite3 *db_open(const char *zDbName){
717 int rc;
718 sqlite3 *db;
719
720 #if defined(__CYGWIN__)
721 zDbName = fossil_utf8_to_filename(zDbName);
722 #endif
723 if( g.fSqlTrace ) fossil_trace("-- sqlite3_open: [%s]\n", zDbName);
724 rc = sqlite3_open_v2(
725 zDbName, &db,
@@ -1989,23 +1989,28 @@
1989 ** If VERSION is specified then that version is checked out. Otherwise
1990 ** the latest version is checked out. No files other than "manifest"
1991 ** and "manifest.uuid" are modified if the --keep option is present.
1992 **
1993 ** Options:
 
 
 
1994 ** --keep Only modify the manifest and manifest.uuid files
1995 ** --nested Allow opening a repository inside an opened checkout
1996 **
1997 ** See also: close
1998 */
1999 void cmd_open(void){
 
2000 int keepFlag;
2001 int allowNested;
2002 char **oldArgv;
2003 int oldArgc;
2004 static char *azNewArgv[] = { 0, "checkout", "--prompt", 0, 0, 0 };
2005
2006 url_proxy_options();
 
2007 keepFlag = find_option("keep",0,0)!=0;
2008 allowNested = find_option("nested",0,0)!=0;
2009 if( g.argc!=3 && g.argc!=4 ){
2010 usage("REPOSITORY-FILENAME ?VERSION?");
2011 }
@@ -2030,22 +2035,24 @@
2030 db_lset_int("checkout", 0);
2031 oldArgv = g.argv;
2032 oldArgc = g.argc;
2033 azNewArgv[0] = g.argv[0];
2034 g.argv = azNewArgv;
2035 g.argc = 3;
2036 if( oldArgc==4 ){
2037 azNewArgv[g.argc-1] = oldArgv[3];
2038 }else if( !db_exists("SELECT 1 FROM event WHERE type='ci'") ){
2039 azNewArgv[g.argc-1] = "--latest";
2040 }else{
2041 azNewArgv[g.argc-1] = db_get("main-branch", "trunk");
2042 }
2043 if( keepFlag ){
2044 azNewArgv[g.argc++] = "--keep";
2045 }
2046 checkout_cmd();
 
 
2047 g.argc = 2;
2048 info_cmd();
2049 }
2050
2051 /*
@@ -2101,66 +2108,68 @@
2101 */
2102 #if INTERFACE
2103 struct stControlSettings {
2104 char const *name; /* Name of the setting */
2105 char const *var; /* Internal variable name used by db_set() */
2106 int width; /* Width of display. 0 for boolean values */
2107 int versionable; /* Is this setting versionable? */
 
2108 char const *def; /* Default value */
2109 };
2110 #endif /* INTERFACE */
2111 struct stControlSettings const ctrlSettings[] = {
2112 { "access-log", 0, 0, 0, "off" },
2113 { "allow-symlinks",0, 0, 1, "off" },
2114 { "auto-captcha", "autocaptcha", 0, 0, "on" },
2115 { "auto-hyperlink",0, 0, 0, "on", },
2116 { "auto-shun", 0, 0, 0, "on" },
2117 { "autosync", 0, 0, 0, "on" },
2118 { "binary-glob", 0, 40, 1, "" },
2119 { "clearsign", 0, 0, 0, "off" },
2120 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__DARWIN__) || defined(__APPLE__)
2121 { "case-sensitive",0, 0, 0, "off" },
 
2122 #else
2123 { "case-sensitive",0, 0, 0, "on" },
2124 #endif
2125 { "clean-glob", 0, 40, 1, "" },
2126 { "crnl-glob", 0, 40, 1, "" },
2127 { "default-perms", 0, 16, 0, "u" },
2128 { "diff-binary", 0, 0, 0, "on" },
2129 { "diff-command", 0, 40, 0, "" },
2130 { "dont-push", 0, 0, 0, "off" },
2131 { "editor", 0, 32, 0, "" },
2132 { "empty-dirs", 0, 40, 1, "" },
2133 { "encoding-glob", 0, 40, 1, "" },
2134 { "gdiff-command", 0, 40, 0, "gdiff" },
2135 { "gmerge-command",0, 40, 0, "" },
2136 { "http-port", 0, 16, 0, "8080" },
2137 { "https-login", 0, 0, 0, "off" },
2138 { "ignore-glob", 0, 40, 1, "" },
2139 { "keep-glob", 0, 40, 1, "" },
2140 { "localauth", 0, 0, 0, "off" },
2141 { "main-branch", 0, 40, 0, "trunk" },
2142 { "manifest", 0, 0, 1, "off" },
2143 { "max-upload", 0, 25, 0, "250000" },
2144 { "mtime-changes", 0, 0, 0, "on" },
2145 { "pgp-command", 0, 40, 0, "gpg --clearsign -o " },
2146 { "proxy", 0, 32, 0, "off" },
2147 { "relative-paths",0, 0, 0, "on" },
2148 { "repo-cksum", 0, 0, 0, "on" },
2149 { "self-register", 0, 0, 0, "off" },
2150 { "ssh-command", 0, 40, 0, "" },
2151 { "ssl-ca-location",0, 40, 0, "" },
2152 { "ssl-identity", 0, 40, 0, "" },
2153 #ifdef FOSSIL_ENABLE_TCL
2154 { "tcl", 0, 0, 0, "off" },
2155 { "tcl-setup", 0, 40, 0, "" },
2156 #endif
2157 { "th1-setup", 0, 40, 0, "" },
2158 { "th1-uri-regexp",0, 40, 0, "" },
2159 { "web-browser", 0, 32, 0, "" },
2160 { "white-foreground", 0, 0, 0, "off" },
2161 { 0,0,0,0,0 }
2162 };
2163
2164 /*
2165 ** COMMAND: settings
2166 ** COMMAND: unset*
2167
--- src/db.c
+++ src/db.c
@@ -715,11 +715,11 @@
715 */
716 LOCAL sqlite3 *db_open(const char *zDbName){
717 int rc;
718 sqlite3 *db;
719
720 #if defined(__CYGWIN__) && !defined(USE_SYSTEM_SQLITE)
721 zDbName = fossil_utf8_to_filename(zDbName);
722 #endif
723 if( g.fSqlTrace ) fossil_trace("-- sqlite3_open: [%s]\n", zDbName);
724 rc = sqlite3_open_v2(
725 zDbName, &db,
@@ -1989,23 +1989,28 @@
1989 ** If VERSION is specified then that version is checked out. Otherwise
1990 ** the latest version is checked out. No files other than "manifest"
1991 ** and "manifest.uuid" are modified if the --keep option is present.
1992 **
1993 ** Options:
1994 ** --empty Initialize checkout as being empty, but still connected
1995 ** with the local repository. If you commit this checkout,
1996 ** it will become a new "initial" commit in the repository.
1997 ** --keep Only modify the manifest and manifest.uuid files
1998 ** --nested Allow opening a repository inside an opened checkout
1999 **
2000 ** See also: close
2001 */
2002 void cmd_open(void){
2003 int emptyFlag;
2004 int keepFlag;
2005 int allowNested;
2006 char **oldArgv;
2007 int oldArgc;
2008 static char *azNewArgv[] = { 0, "checkout", "--prompt", 0, 0, 0 };
2009
2010 url_proxy_options();
2011 emptyFlag = find_option("empty",0,0)!=0;
2012 keepFlag = find_option("keep",0,0)!=0;
2013 allowNested = find_option("nested",0,0)!=0;
2014 if( g.argc!=3 && g.argc!=4 ){
2015 usage("REPOSITORY-FILENAME ?VERSION?");
2016 }
@@ -2030,22 +2035,24 @@
2035 db_lset_int("checkout", 0);
2036 oldArgv = g.argv;
2037 oldArgc = g.argc;
2038 azNewArgv[0] = g.argv[0];
2039 g.argv = azNewArgv;
2040 if( !emptyFlag){
2041 g.argc = 3;
2042 if( oldArgc==4 ){
2043 azNewArgv[g.argc-1] = oldArgv[3];
2044 }else if( !db_exists("SELECT 1 FROM event WHERE type='ci'") ){
2045 azNewArgv[g.argc-1] = "--latest";
2046 }else{
2047 azNewArgv[g.argc-1] = db_get("main-branch", "trunk");
2048 }
2049 if( keepFlag ){
2050 azNewArgv[g.argc++] = "--keep";
2051 }
2052 checkout_cmd();
2053 }
2054 g.argc = 2;
2055 info_cmd();
2056 }
2057
2058 /*
@@ -2101,66 +2108,68 @@
2108 */
2109 #if INTERFACE
2110 struct stControlSettings {
2111 char const *name; /* Name of the setting */
2112 char const *var; /* Internal variable name used by db_set() */
2113 int width; /* Width of display. 0 for boolean values. */
2114 int versionable; /* Is this setting versionable? */
2115 int forceTextArea; /* Force using a text area for display? */
2116 char const *def; /* Default value */
2117 };
2118 #endif /* INTERFACE */
2119 struct stControlSettings const ctrlSettings[] = {
2120 { "access-log", 0, 0, 0, 0, "off" },
2121 { "allow-symlinks", 0, 0, 1, 0, "off" },
2122 { "auto-captcha", "autocaptcha", 0, 0, 0, "on" },
2123 { "auto-hyperlink", 0, 0, 0, 0, "on", },
2124 { "auto-shun", 0, 0, 0, 0, "on" },
2125 { "autosync", 0, 0, 0, 0, "on" },
2126 { "binary-glob", 0, 40, 1, 0, "" },
2127 { "clearsign", 0, 0, 0, 0, "off" },
2128 #if defined(_WIN32) || defined(__CYGWIN__) || defined(__DARWIN__) || \
2129 defined(__APPLE__)
2130 { "case-sensitive", 0, 0, 0, 0, "off" },
2131 #else
2132 { "case-sensitive", 0, 0, 0, 0, "on" },
2133 #endif
2134 { "clean-glob", 0, 40, 1, 0, "" },
2135 { "crnl-glob", 0, 40, 1, 0, "" },
2136 { "default-perms", 0, 16, 0, 0, "u" },
2137 { "diff-binary", 0, 0, 0, 0, "on" },
2138 { "diff-command", 0, 40, 0, 0, "" },
2139 { "dont-push", 0, 0, 0, 0, "off" },
2140 { "editor", 0, 32, 0, 0, "" },
2141 { "empty-dirs", 0, 40, 1, 0, "" },
2142 { "encoding-glob", 0, 40, 1, 0, "" },
2143 { "gdiff-command", 0, 40, 0, 0, "gdiff" },
2144 { "gmerge-command", 0, 40, 0, 0, "" },
2145 { "http-port", 0, 16, 0, 0, "8080" },
2146 { "https-login", 0, 0, 0, 0, "off" },
2147 { "ignore-glob", 0, 40, 1, 0, "" },
2148 { "keep-glob", 0, 40, 1, 0, "" },
2149 { "localauth", 0, 0, 0, 0, "off" },
2150 { "main-branch", 0, 40, 0, 0, "trunk" },
2151 { "manifest", 0, 0, 1, 0, "off" },
2152 { "max-upload", 0, 25, 0, 0, "250000" },
2153 { "mtime-changes", 0, 0, 0, 0, "on" },
2154 { "pgp-command", 0, 40, 0, 0, "gpg --clearsign -o " },
2155 { "proxy", 0, 32, 0, 0, "off" },
2156 { "relative-paths", 0, 0, 0, 0, "on" },
2157 { "repo-cksum", 0, 0, 0, 0, "on" },
2158 { "self-register", 0, 0, 0, 0, "off" },
2159 { "ssh-command", 0, 40, 0, 0, "" },
2160 { "ssl-ca-location", 0, 40, 0, 0, "" },
2161 { "ssl-identity", 0, 40, 0, 0, "" },
2162 #ifdef FOSSIL_ENABLE_TCL
2163 { "tcl", 0, 0, 0, 0, "off" },
2164 { "tcl-setup", 0, 40, 0, 1, "" },
2165 #endif
2166 { "th1-setup", 0, 40, 0, 1, "" },
2167 { "th1-uri-regexp", 0, 40, 0, 0, "" },
2168 { "web-browser", 0, 32, 0, 0, "" },
2169 { "white-foreground", 0, 0, 0, 0, "off" },
2170 { 0,0,0,0,0,0 }
2171 };
2172
2173 /*
2174 ** COMMAND: settings
2175 ** COMMAND: unset*
2176
+7 -2
--- src/rebuild.c
+++ src/rebuild.c
@@ -793,11 +793,10 @@
793793
db_close(1);
794794
db_open_repository(g.zRepositoryName);
795795
if( !bForce ){
796796
Blob ans;
797797
char cReply;
798
- blob_zero(&ans);
799798
prompt_user(
800799
"Scrubbing the repository will permanently delete information.\n"
801800
"Changes cannot be undone. Continue (y/N)? ", &ans);
802801
cReply = blob_str(&ans)[0];
803802
if( cReply!='y' && cReply!='Y' ){
@@ -859,11 +858,17 @@
859858
continue;
860859
}
861860
zUtf8Name = fossil_filename_to_utf8(pEntry->d_name);
862861
zSubpath = mprintf("%s/%s", zPath, zUtf8Name);
863862
fossil_filename_free(zUtf8Name);
864
- if( file_isdir(zSubpath)==1 ){
863
+#ifdef _DIRENT_HAVE_D_TYPE
864
+ if( (pEntry->d_type==DT_UNKNOWN || pEntry->d_type==DT_LNK)
865
+ ? (file_isdir(zSubpath)==1) : (pEntry->d_type==DT_DIR) )
866
+#else
867
+ if( file_isdir(zSubpath)==1 )
868
+#endif
869
+ {
865870
recon_read_dir(zSubpath);
866871
}else{
867872
blob_init(&path, 0, 0);
868873
blob_appendf(&path, "%s", zSubpath);
869874
if( blob_read_from_file(&aContent, blob_str(&path))==-1 ){
870875
--- src/rebuild.c
+++ src/rebuild.c
@@ -793,11 +793,10 @@
793 db_close(1);
794 db_open_repository(g.zRepositoryName);
795 if( !bForce ){
796 Blob ans;
797 char cReply;
798 blob_zero(&ans);
799 prompt_user(
800 "Scrubbing the repository will permanently delete information.\n"
801 "Changes cannot be undone. Continue (y/N)? ", &ans);
802 cReply = blob_str(&ans)[0];
803 if( cReply!='y' && cReply!='Y' ){
@@ -859,11 +858,17 @@
859 continue;
860 }
861 zUtf8Name = fossil_filename_to_utf8(pEntry->d_name);
862 zSubpath = mprintf("%s/%s", zPath, zUtf8Name);
863 fossil_filename_free(zUtf8Name);
864 if( file_isdir(zSubpath)==1 ){
 
 
 
 
 
 
865 recon_read_dir(zSubpath);
866 }else{
867 blob_init(&path, 0, 0);
868 blob_appendf(&path, "%s", zSubpath);
869 if( blob_read_from_file(&aContent, blob_str(&path))==-1 ){
870
--- src/rebuild.c
+++ src/rebuild.c
@@ -793,11 +793,10 @@
793 db_close(1);
794 db_open_repository(g.zRepositoryName);
795 if( !bForce ){
796 Blob ans;
797 char cReply;
 
798 prompt_user(
799 "Scrubbing the repository will permanently delete information.\n"
800 "Changes cannot be undone. Continue (y/N)? ", &ans);
801 cReply = blob_str(&ans)[0];
802 if( cReply!='y' && cReply!='Y' ){
@@ -859,11 +858,17 @@
858 continue;
859 }
860 zUtf8Name = fossil_filename_to_utf8(pEntry->d_name);
861 zSubpath = mprintf("%s/%s", zPath, zUtf8Name);
862 fossil_filename_free(zUtf8Name);
863 #ifdef _DIRENT_HAVE_D_TYPE
864 if( (pEntry->d_type==DT_UNKNOWN || pEntry->d_type==DT_LNK)
865 ? (file_isdir(zSubpath)==1) : (pEntry->d_type==DT_DIR) )
866 #else
867 if( file_isdir(zSubpath)==1 )
868 #endif
869 {
870 recon_read_dir(zSubpath);
871 }else{
872 blob_init(&path, 0, 0);
873 blob_appendf(&path, "%s", zSubpath);
874 if( blob_read_from_file(&aContent, blob_str(&path))==-1 ){
875
+14 -5
--- src/setup.c
+++ src/setup.c
@@ -1261,32 +1261,41 @@
12611261
} else {
12621262
@ <br />
12631263
}
12641264
}
12651265
}
1266
+ @ <br /><input type="submit" name="submit" value="Apply Changes" />
12661267
@ </td><td style="width:50px;"></td><td valign="top">
12671268
for(pSet=ctrlSettings; pSet->name!=0; pSet++){
1268
- if( pSet->width!=0 && !pSet->versionable){
1269
+ if( pSet->width!=0 && !pSet->versionable && !pSet->forceTextArea ){
12691270
entry_attribute(pSet->name, /*pSet->width*/ 25, pSet->name,
12701271
pSet->var!=0 ? pSet->var : pSet->name,
12711272
(char*)pSet->def, 0);
12721273
@ <br />
12731274
}
1275
+ }
1276
+ for(pSet=ctrlSettings; pSet->name!=0; pSet++){
1277
+ if( pSet->width!=0 && !pSet->versionable && pSet->forceTextArea ){
1278
+ @<b>%s(pSet->name)</b><br />
1279
+ textarea_attribute("", /*rows*/ 3, /*cols*/ 50, pSet->name,
1280
+ pSet->var!=0 ? pSet->var : pSet->name,
1281
+ (char*)pSet->def, 0);
1282
+ @ <br />
1283
+ }
12741284
}
12751285
@ </td><td style="width:50px;"></td><td valign="top">
12761286
for(pSet=ctrlSettings; pSet->name!=0; pSet++){
1277
- int hasVersionableValue = db_get_do_versionable(pSet->name, NULL)!=0;
1278
- if( pSet->width!=0 && pSet->versionable){
1287
+ if( pSet->width!=0 && pSet->versionable ){
1288
+ int hasVersionableValue = db_get_do_versionable(pSet->name, NULL)!=0;
12791289
@<b>%s(pSet->name)</b> (v)<br />
12801290
textarea_attribute("", /*rows*/ 3, /*cols*/ 20, pSet->name,
12811291
pSet->var!=0 ? pSet->var : pSet->name,
12821292
(char*)pSet->def, hasVersionableValue);
12831293
@<br />
12841294
}
12851295
}
12861296
@ </td></tr></table>
1287
- @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
12881297
@ </div></form>
12891298
@ <p>Settings marked with (v) are 'versionable' and will be overridden
12901299
@ by the contents of files named <tt>.fossil-settings/PROPERTY</tt>.
12911300
@ If such a file is present, the corresponding field above is not
12921301
@ editable.</p><hr /><p>
@@ -1469,11 +1478,11 @@
14691478
@ </div></form>
14701479
@ <hr />
14711480
@ The default header is shown below for reference. Other examples
14721481
@ of headers can be seen on the <a href="setup_skin">skins page</a>.
14731482
@ See also the <a href="setup_editcss">CSS</a> and
1474
- @ <a href="setup_footer">footer</a> editing screeens.
1483
+ @ <a href="setup_footer">footer</a> editing screens.
14751484
@ <blockquote><pre>
14761485
@ %h(zDefaultHeader)
14771486
@ </pre></blockquote>
14781487
style_footer();
14791488
db_end_transaction(0);
14801489
--- src/setup.c
+++ src/setup.c
@@ -1261,32 +1261,41 @@
1261 } else {
1262 @ <br />
1263 }
1264 }
1265 }
 
1266 @ </td><td style="width:50px;"></td><td valign="top">
1267 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
1268 if( pSet->width!=0 && !pSet->versionable){
1269 entry_attribute(pSet->name, /*pSet->width*/ 25, pSet->name,
1270 pSet->var!=0 ? pSet->var : pSet->name,
1271 (char*)pSet->def, 0);
1272 @ <br />
1273 }
 
 
 
 
 
 
 
 
 
1274 }
1275 @ </td><td style="width:50px;"></td><td valign="top">
1276 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
1277 int hasVersionableValue = db_get_do_versionable(pSet->name, NULL)!=0;
1278 if( pSet->width!=0 && pSet->versionable){
1279 @<b>%s(pSet->name)</b> (v)<br />
1280 textarea_attribute("", /*rows*/ 3, /*cols*/ 20, pSet->name,
1281 pSet->var!=0 ? pSet->var : pSet->name,
1282 (char*)pSet->def, hasVersionableValue);
1283 @<br />
1284 }
1285 }
1286 @ </td></tr></table>
1287 @ <p><input type="submit" name="submit" value="Apply Changes" /></p>
1288 @ </div></form>
1289 @ <p>Settings marked with (v) are 'versionable' and will be overridden
1290 @ by the contents of files named <tt>.fossil-settings/PROPERTY</tt>.
1291 @ If such a file is present, the corresponding field above is not
1292 @ editable.</p><hr /><p>
@@ -1469,11 +1478,11 @@
1469 @ </div></form>
1470 @ <hr />
1471 @ The default header is shown below for reference. Other examples
1472 @ of headers can be seen on the <a href="setup_skin">skins page</a>.
1473 @ See also the <a href="setup_editcss">CSS</a> and
1474 @ <a href="setup_footer">footer</a> editing screeens.
1475 @ <blockquote><pre>
1476 @ %h(zDefaultHeader)
1477 @ </pre></blockquote>
1478 style_footer();
1479 db_end_transaction(0);
1480
--- src/setup.c
+++ src/setup.c
@@ -1261,32 +1261,41 @@
1261 } else {
1262 @ <br />
1263 }
1264 }
1265 }
1266 @ <br /><input type="submit" name="submit" value="Apply Changes" />
1267 @ </td><td style="width:50px;"></td><td valign="top">
1268 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
1269 if( pSet->width!=0 && !pSet->versionable && !pSet->forceTextArea ){
1270 entry_attribute(pSet->name, /*pSet->width*/ 25, pSet->name,
1271 pSet->var!=0 ? pSet->var : pSet->name,
1272 (char*)pSet->def, 0);
1273 @ <br />
1274 }
1275 }
1276 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
1277 if( pSet->width!=0 && !pSet->versionable && pSet->forceTextArea ){
1278 @<b>%s(pSet->name)</b><br />
1279 textarea_attribute("", /*rows*/ 3, /*cols*/ 50, pSet->name,
1280 pSet->var!=0 ? pSet->var : pSet->name,
1281 (char*)pSet->def, 0);
1282 @ <br />
1283 }
1284 }
1285 @ </td><td style="width:50px;"></td><td valign="top">
1286 for(pSet=ctrlSettings; pSet->name!=0; pSet++){
1287 if( pSet->width!=0 && pSet->versionable ){
1288 int hasVersionableValue = db_get_do_versionable(pSet->name, NULL)!=0;
1289 @<b>%s(pSet->name)</b> (v)<br />
1290 textarea_attribute("", /*rows*/ 3, /*cols*/ 20, pSet->name,
1291 pSet->var!=0 ? pSet->var : pSet->name,
1292 (char*)pSet->def, hasVersionableValue);
1293 @<br />
1294 }
1295 }
1296 @ </td></tr></table>
 
1297 @ </div></form>
1298 @ <p>Settings marked with (v) are 'versionable' and will be overridden
1299 @ by the contents of files named <tt>.fossil-settings/PROPERTY</tt>.
1300 @ If such a file is present, the corresponding field above is not
1301 @ editable.</p><hr /><p>
@@ -1469,11 +1478,11 @@
1478 @ </div></form>
1479 @ <hr />
1480 @ The default header is shown below for reference. Other examples
1481 @ of headers can be seen on the <a href="setup_skin">skins page</a>.
1482 @ See also the <a href="setup_editcss">CSS</a> and
1483 @ <a href="setup_footer">footer</a> editing screens.
1484 @ <blockquote><pre>
1485 @ %h(zDefaultHeader)
1486 @ </pre></blockquote>
1487 style_footer();
1488 db_end_transaction(0);
1489
+55 -70
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -23,10 +23,64 @@
2323
# define SQLITE_PRIVATE static
2424
#endif
2525
#ifndef SQLITE_API
2626
# define SQLITE_API
2727
#endif
28
+/************** Begin file sqliteInt.h ***************************************/
29
+/*
30
+** 2001 September 15
31
+**
32
+** The author disclaims copyright to this source code. In place of
33
+** a legal notice, here is a blessing:
34
+**
35
+** May you do good and not evil.
36
+** May you find forgiveness for yourself and forgive others.
37
+** May you share freely, never taking more than you give.
38
+**
39
+*************************************************************************
40
+** Internal interface definitions for SQLite.
41
+**
42
+*/
43
+#ifndef _SQLITEINT_H_
44
+#define _SQLITEINT_H_
45
+
46
+/*
47
+** These #defines should enable >2GB file support on POSIX if the
48
+** underlying operating system supports it. If the OS lacks
49
+** large file support, or if the OS is windows, these should be no-ops.
50
+**
51
+** Ticket #2739: The _LARGEFILE_SOURCE macro must appear before any
52
+** system #includes. Hence, this block of code must be the very first
53
+** code in all source files.
54
+**
55
+** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
56
+** on the compiler command line. This is necessary if you are compiling
57
+** on a recent machine (ex: Red Hat 7.2) but you want your code to work
58
+** on an older machine (ex: Red Hat 6.0). If you compile on Red Hat 7.2
59
+** without this option, LFS is enable. But LFS does not exist in the kernel
60
+** in Red Hat 6.0, so the code won't work. Hence, for maximum binary
61
+** portability you should omit LFS.
62
+**
63
+** The previous paragraph was written in 2005. (This paragraph is written
64
+** on 2008-11-28.) These days, all Linux kernels support large files, so
65
+** you should probably leave LFS enabled. But some embedded platforms might
66
+** lack LFS in which case the SQLITE_DISABLE_LFS macro might still be useful.
67
+**
68
+** Similar is true for Mac OS X. LFS is only supported on Mac OS X 9 and later.
69
+*/
70
+#ifndef SQLITE_DISABLE_LFS
71
+# define _LARGE_FILE 1
72
+# ifndef _FILE_OFFSET_BITS
73
+# define _FILE_OFFSET_BITS 64
74
+# endif
75
+# define _LARGEFILE_SOURCE 1
76
+#endif
77
+
78
+/* The public SQLite interface. The _FILE_OFFSET_BITS macro must appear
79
+** first in QNX.
80
+*/
81
+/************** Include sqlite3.h in the middle of sqliteInt.h ***************/
2882
/************** Begin file sqlite3.h *****************************************/
2983
/*
3084
** 2001 September 15
3185
**
3286
** The author disclaims copyright to this source code. In place of
@@ -7411,54 +7465,11 @@
74117465
74127466
#endif /* ifndef _SQLITE3RTREE_H_ */
74137467
74147468
74157469
/************** End of sqlite3.h *********************************************/
7416
-/************** Begin file sqliteInt.h ***************************************/
7417
-/*
7418
-** 2001 September 15
7419
-**
7420
-** The author disclaims copyright to this source code. In place of
7421
-** a legal notice, here is a blessing:
7422
-**
7423
-** May you do good and not evil.
7424
-** May you find forgiveness for yourself and forgive others.
7425
-** May you share freely, never taking more than you give.
7426
-**
7427
-*************************************************************************
7428
-** Internal interface definitions for SQLite.
7429
-**
7430
-*/
7431
-#ifndef _SQLITEINT_H_
7432
-#define _SQLITEINT_H_
7433
-
7434
-/*
7435
-** These #defines should enable >2GB file support on POSIX if the
7436
-** underlying operating system supports it. If the OS lacks
7437
-** large file support, or if the OS is windows, these should be no-ops.
7438
-**
7439
-** Ticket #2739: The _LARGEFILE_SOURCE macro must appear before any
7440
-** system #includes. Hence, this block of code must be the very first
7441
-** code in all source files.
7442
-**
7443
-** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
7444
-** on the compiler command line. This is necessary if you are compiling
7445
-** on a recent machine (ex: Red Hat 7.2) but you want your code to work
7446
-** on an older machine (ex: Red Hat 6.0). If you compile on Red Hat 7.2
7447
-** without this option, LFS is enable. But LFS does not exist in the kernel
7448
-** in Red Hat 6.0, so the code won't work. Hence, for maximum binary
7449
-** portability you should omit LFS.
7450
-**
7451
-** Similar is true for Mac OS X. LFS is only supported on Mac OS X 9 and later.
7452
-*/
7453
-#ifndef SQLITE_DISABLE_LFS
7454
-# define _LARGE_FILE 1
7455
-# ifndef _FILE_OFFSET_BITS
7456
-# define _FILE_OFFSET_BITS 64
7457
-# endif
7458
-# define _LARGEFILE_SOURCE 1
7459
-#endif
7470
+/************** Continuing where we left off in sqliteInt.h ******************/
74607471
74617472
/*
74627473
** For MinGW, check to see if we can include the header file containing its
74637474
** version information, among other things. Normally, this internal MinGW
74647475
** header file would [only] be included automatically by other MinGW header
@@ -23462,36 +23473,10 @@
2346223473
# else
2346323474
# define OS_VXWORKS 0
2346423475
# endif
2346523476
#endif
2346623477
23467
-/*
23468
-** These #defines should enable >2GB file support on Posix if the
23469
-** underlying operating system supports it. If the OS lacks
23470
-** large file support, these should be no-ops.
23471
-**
23472
-** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
23473
-** on the compiler command line. This is necessary if you are compiling
23474
-** on a recent machine (ex: RedHat 7.2) but you want your code to work
23475
-** on an older machine (ex: RedHat 6.0). If you compile on RedHat 7.2
23476
-** without this option, LFS is enable. But LFS does not exist in the kernel
23477
-** in RedHat 6.0, so the code won't work. Hence, for maximum binary
23478
-** portability you should omit LFS.
23479
-**
23480
-** The previous paragraph was written in 2005. (This paragraph is written
23481
-** on 2008-11-28.) These days, all Linux kernels support large files, so
23482
-** you should probably leave LFS enabled. But some embedded platforms might
23483
-** lack LFS in which case the SQLITE_DISABLE_LFS macro might still be useful.
23484
-*/
23485
-#ifndef SQLITE_DISABLE_LFS
23486
-# define _LARGE_FILE 1
23487
-# ifndef _FILE_OFFSET_BITS
23488
-# define _FILE_OFFSET_BITS 64
23489
-# endif
23490
-# define _LARGEFILE_SOURCE 1
23491
-#endif
23492
-
2349323478
/*
2349423479
** standard include files.
2349523480
*/
2349623481
#include <sys/types.h>
2349723482
#include <sys/stat.h>
2349823483
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -23,10 +23,64 @@
23 # define SQLITE_PRIVATE static
24 #endif
25 #ifndef SQLITE_API
26 # define SQLITE_API
27 #endif
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28 /************** Begin file sqlite3.h *****************************************/
29 /*
30 ** 2001 September 15
31 **
32 ** The author disclaims copyright to this source code. In place of
@@ -7411,54 +7465,11 @@
7411
7412 #endif /* ifndef _SQLITE3RTREE_H_ */
7413
7414
7415 /************** End of sqlite3.h *********************************************/
7416 /************** Begin file sqliteInt.h ***************************************/
7417 /*
7418 ** 2001 September 15
7419 **
7420 ** The author disclaims copyright to this source code. In place of
7421 ** a legal notice, here is a blessing:
7422 **
7423 ** May you do good and not evil.
7424 ** May you find forgiveness for yourself and forgive others.
7425 ** May you share freely, never taking more than you give.
7426 **
7427 *************************************************************************
7428 ** Internal interface definitions for SQLite.
7429 **
7430 */
7431 #ifndef _SQLITEINT_H_
7432 #define _SQLITEINT_H_
7433
7434 /*
7435 ** These #defines should enable >2GB file support on POSIX if the
7436 ** underlying operating system supports it. If the OS lacks
7437 ** large file support, or if the OS is windows, these should be no-ops.
7438 **
7439 ** Ticket #2739: The _LARGEFILE_SOURCE macro must appear before any
7440 ** system #includes. Hence, this block of code must be the very first
7441 ** code in all source files.
7442 **
7443 ** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
7444 ** on the compiler command line. This is necessary if you are compiling
7445 ** on a recent machine (ex: Red Hat 7.2) but you want your code to work
7446 ** on an older machine (ex: Red Hat 6.0). If you compile on Red Hat 7.2
7447 ** without this option, LFS is enable. But LFS does not exist in the kernel
7448 ** in Red Hat 6.0, so the code won't work. Hence, for maximum binary
7449 ** portability you should omit LFS.
7450 **
7451 ** Similar is true for Mac OS X. LFS is only supported on Mac OS X 9 and later.
7452 */
7453 #ifndef SQLITE_DISABLE_LFS
7454 # define _LARGE_FILE 1
7455 # ifndef _FILE_OFFSET_BITS
7456 # define _FILE_OFFSET_BITS 64
7457 # endif
7458 # define _LARGEFILE_SOURCE 1
7459 #endif
7460
7461 /*
7462 ** For MinGW, check to see if we can include the header file containing its
7463 ** version information, among other things. Normally, this internal MinGW
7464 ** header file would [only] be included automatically by other MinGW header
@@ -23462,36 +23473,10 @@
23462 # else
23463 # define OS_VXWORKS 0
23464 # endif
23465 #endif
23466
23467 /*
23468 ** These #defines should enable >2GB file support on Posix if the
23469 ** underlying operating system supports it. If the OS lacks
23470 ** large file support, these should be no-ops.
23471 **
23472 ** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
23473 ** on the compiler command line. This is necessary if you are compiling
23474 ** on a recent machine (ex: RedHat 7.2) but you want your code to work
23475 ** on an older machine (ex: RedHat 6.0). If you compile on RedHat 7.2
23476 ** without this option, LFS is enable. But LFS does not exist in the kernel
23477 ** in RedHat 6.0, so the code won't work. Hence, for maximum binary
23478 ** portability you should omit LFS.
23479 **
23480 ** The previous paragraph was written in 2005. (This paragraph is written
23481 ** on 2008-11-28.) These days, all Linux kernels support large files, so
23482 ** you should probably leave LFS enabled. But some embedded platforms might
23483 ** lack LFS in which case the SQLITE_DISABLE_LFS macro might still be useful.
23484 */
23485 #ifndef SQLITE_DISABLE_LFS
23486 # define _LARGE_FILE 1
23487 # ifndef _FILE_OFFSET_BITS
23488 # define _FILE_OFFSET_BITS 64
23489 # endif
23490 # define _LARGEFILE_SOURCE 1
23491 #endif
23492
23493 /*
23494 ** standard include files.
23495 */
23496 #include <sys/types.h>
23497 #include <sys/stat.h>
23498
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -23,10 +23,64 @@
23 # define SQLITE_PRIVATE static
24 #endif
25 #ifndef SQLITE_API
26 # define SQLITE_API
27 #endif
28 /************** Begin file sqliteInt.h ***************************************/
29 /*
30 ** 2001 September 15
31 **
32 ** The author disclaims copyright to this source code. In place of
33 ** a legal notice, here is a blessing:
34 **
35 ** May you do good and not evil.
36 ** May you find forgiveness for yourself and forgive others.
37 ** May you share freely, never taking more than you give.
38 **
39 *************************************************************************
40 ** Internal interface definitions for SQLite.
41 **
42 */
43 #ifndef _SQLITEINT_H_
44 #define _SQLITEINT_H_
45
46 /*
47 ** These #defines should enable >2GB file support on POSIX if the
48 ** underlying operating system supports it. If the OS lacks
49 ** large file support, or if the OS is windows, these should be no-ops.
50 **
51 ** Ticket #2739: The _LARGEFILE_SOURCE macro must appear before any
52 ** system #includes. Hence, this block of code must be the very first
53 ** code in all source files.
54 **
55 ** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
56 ** on the compiler command line. This is necessary if you are compiling
57 ** on a recent machine (ex: Red Hat 7.2) but you want your code to work
58 ** on an older machine (ex: Red Hat 6.0). If you compile on Red Hat 7.2
59 ** without this option, LFS is enable. But LFS does not exist in the kernel
60 ** in Red Hat 6.0, so the code won't work. Hence, for maximum binary
61 ** portability you should omit LFS.
62 **
63 ** The previous paragraph was written in 2005. (This paragraph is written
64 ** on 2008-11-28.) These days, all Linux kernels support large files, so
65 ** you should probably leave LFS enabled. But some embedded platforms might
66 ** lack LFS in which case the SQLITE_DISABLE_LFS macro might still be useful.
67 **
68 ** Similar is true for Mac OS X. LFS is only supported on Mac OS X 9 and later.
69 */
70 #ifndef SQLITE_DISABLE_LFS
71 # define _LARGE_FILE 1
72 # ifndef _FILE_OFFSET_BITS
73 # define _FILE_OFFSET_BITS 64
74 # endif
75 # define _LARGEFILE_SOURCE 1
76 #endif
77
78 /* The public SQLite interface. The _FILE_OFFSET_BITS macro must appear
79 ** first in QNX.
80 */
81 /************** Include sqlite3.h in the middle of sqliteInt.h ***************/
82 /************** Begin file sqlite3.h *****************************************/
83 /*
84 ** 2001 September 15
85 **
86 ** The author disclaims copyright to this source code. In place of
@@ -7411,54 +7465,11 @@
7465
7466 #endif /* ifndef _SQLITE3RTREE_H_ */
7467
7468
7469 /************** End of sqlite3.h *********************************************/
7470 /************** Continuing where we left off in sqliteInt.h ******************/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7471
7472 /*
7473 ** For MinGW, check to see if we can include the header file containing its
7474 ** version information, among other things. Normally, this internal MinGW
7475 ** header file would [only] be included automatically by other MinGW header
@@ -23462,36 +23473,10 @@
23473 # else
23474 # define OS_VXWORKS 0
23475 # endif
23476 #endif
23477
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23478 /*
23479 ** standard include files.
23480 */
23481 #include <sys/types.h>
23482 #include <sys/stat.h>
23483
+55 -70
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -23,10 +23,64 @@
2323
# define SQLITE_PRIVATE static
2424
#endif
2525
#ifndef SQLITE_API
2626
# define SQLITE_API
2727
#endif
28
+/************** Begin file sqliteInt.h ***************************************/
29
+/*
30
+** 2001 September 15
31
+**
32
+** The author disclaims copyright to this source code. In place of
33
+** a legal notice, here is a blessing:
34
+**
35
+** May you do good and not evil.
36
+** May you find forgiveness for yourself and forgive others.
37
+** May you share freely, never taking more than you give.
38
+**
39
+*************************************************************************
40
+** Internal interface definitions for SQLite.
41
+**
42
+*/
43
+#ifndef _SQLITEINT_H_
44
+#define _SQLITEINT_H_
45
+
46
+/*
47
+** These #defines should enable >2GB file support on POSIX if the
48
+** underlying operating system supports it. If the OS lacks
49
+** large file support, or if the OS is windows, these should be no-ops.
50
+**
51
+** Ticket #2739: The _LARGEFILE_SOURCE macro must appear before any
52
+** system #includes. Hence, this block of code must be the very first
53
+** code in all source files.
54
+**
55
+** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
56
+** on the compiler command line. This is necessary if you are compiling
57
+** on a recent machine (ex: Red Hat 7.2) but you want your code to work
58
+** on an older machine (ex: Red Hat 6.0). If you compile on Red Hat 7.2
59
+** without this option, LFS is enable. But LFS does not exist in the kernel
60
+** in Red Hat 6.0, so the code won't work. Hence, for maximum binary
61
+** portability you should omit LFS.
62
+**
63
+** The previous paragraph was written in 2005. (This paragraph is written
64
+** on 2008-11-28.) These days, all Linux kernels support large files, so
65
+** you should probably leave LFS enabled. But some embedded platforms might
66
+** lack LFS in which case the SQLITE_DISABLE_LFS macro might still be useful.
67
+**
68
+** Similar is true for Mac OS X. LFS is only supported on Mac OS X 9 and later.
69
+*/
70
+#ifndef SQLITE_DISABLE_LFS
71
+# define _LARGE_FILE 1
72
+# ifndef _FILE_OFFSET_BITS
73
+# define _FILE_OFFSET_BITS 64
74
+# endif
75
+# define _LARGEFILE_SOURCE 1
76
+#endif
77
+
78
+/* The public SQLite interface. The _FILE_OFFSET_BITS macro must appear
79
+** first in QNX.
80
+*/
81
+/************** Include sqlite3.h in the middle of sqliteInt.h ***************/
2882
/************** Begin file sqlite3.h *****************************************/
2983
/*
3084
** 2001 September 15
3185
**
3286
** The author disclaims copyright to this source code. In place of
@@ -7411,54 +7465,11 @@
74117465
74127466
#endif /* ifndef _SQLITE3RTREE_H_ */
74137467
74147468
74157469
/************** End of sqlite3.h *********************************************/
7416
-/************** Begin file sqliteInt.h ***************************************/
7417
-/*
7418
-** 2001 September 15
7419
-**
7420
-** The author disclaims copyright to this source code. In place of
7421
-** a legal notice, here is a blessing:
7422
-**
7423
-** May you do good and not evil.
7424
-** May you find forgiveness for yourself and forgive others.
7425
-** May you share freely, never taking more than you give.
7426
-**
7427
-*************************************************************************
7428
-** Internal interface definitions for SQLite.
7429
-**
7430
-*/
7431
-#ifndef _SQLITEINT_H_
7432
-#define _SQLITEINT_H_
7433
-
7434
-/*
7435
-** These #defines should enable >2GB file support on POSIX if the
7436
-** underlying operating system supports it. If the OS lacks
7437
-** large file support, or if the OS is windows, these should be no-ops.
7438
-**
7439
-** Ticket #2739: The _LARGEFILE_SOURCE macro must appear before any
7440
-** system #includes. Hence, this block of code must be the very first
7441
-** code in all source files.
7442
-**
7443
-** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
7444
-** on the compiler command line. This is necessary if you are compiling
7445
-** on a recent machine (ex: Red Hat 7.2) but you want your code to work
7446
-** on an older machine (ex: Red Hat 6.0). If you compile on Red Hat 7.2
7447
-** without this option, LFS is enable. But LFS does not exist in the kernel
7448
-** in Red Hat 6.0, so the code won't work. Hence, for maximum binary
7449
-** portability you should omit LFS.
7450
-**
7451
-** Similar is true for Mac OS X. LFS is only supported on Mac OS X 9 and later.
7452
-*/
7453
-#ifndef SQLITE_DISABLE_LFS
7454
-# define _LARGE_FILE 1
7455
-# ifndef _FILE_OFFSET_BITS
7456
-# define _FILE_OFFSET_BITS 64
7457
-# endif
7458
-# define _LARGEFILE_SOURCE 1
7459
-#endif
7470
+/************** Continuing where we left off in sqliteInt.h ******************/
74607471
74617472
/*
74627473
** For MinGW, check to see if we can include the header file containing its
74637474
** version information, among other things. Normally, this internal MinGW
74647475
** header file would [only] be included automatically by other MinGW header
@@ -23462,36 +23473,10 @@
2346223473
# else
2346323474
# define OS_VXWORKS 0
2346423475
# endif
2346523476
#endif
2346623477
23467
-/*
23468
-** These #defines should enable >2GB file support on Posix if the
23469
-** underlying operating system supports it. If the OS lacks
23470
-** large file support, these should be no-ops.
23471
-**
23472
-** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
23473
-** on the compiler command line. This is necessary if you are compiling
23474
-** on a recent machine (ex: RedHat 7.2) but you want your code to work
23475
-** on an older machine (ex: RedHat 6.0). If you compile on RedHat 7.2
23476
-** without this option, LFS is enable. But LFS does not exist in the kernel
23477
-** in RedHat 6.0, so the code won't work. Hence, for maximum binary
23478
-** portability you should omit LFS.
23479
-**
23480
-** The previous paragraph was written in 2005. (This paragraph is written
23481
-** on 2008-11-28.) These days, all Linux kernels support large files, so
23482
-** you should probably leave LFS enabled. But some embedded platforms might
23483
-** lack LFS in which case the SQLITE_DISABLE_LFS macro might still be useful.
23484
-*/
23485
-#ifndef SQLITE_DISABLE_LFS
23486
-# define _LARGE_FILE 1
23487
-# ifndef _FILE_OFFSET_BITS
23488
-# define _FILE_OFFSET_BITS 64
23489
-# endif
23490
-# define _LARGEFILE_SOURCE 1
23491
-#endif
23492
-
2349323478
/*
2349423479
** standard include files.
2349523480
*/
2349623481
#include <sys/types.h>
2349723482
#include <sys/stat.h>
2349823483
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -23,10 +23,64 @@
23 # define SQLITE_PRIVATE static
24 #endif
25 #ifndef SQLITE_API
26 # define SQLITE_API
27 #endif
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28 /************** Begin file sqlite3.h *****************************************/
29 /*
30 ** 2001 September 15
31 **
32 ** The author disclaims copyright to this source code. In place of
@@ -7411,54 +7465,11 @@
7411
7412 #endif /* ifndef _SQLITE3RTREE_H_ */
7413
7414
7415 /************** End of sqlite3.h *********************************************/
7416 /************** Begin file sqliteInt.h ***************************************/
7417 /*
7418 ** 2001 September 15
7419 **
7420 ** The author disclaims copyright to this source code. In place of
7421 ** a legal notice, here is a blessing:
7422 **
7423 ** May you do good and not evil.
7424 ** May you find forgiveness for yourself and forgive others.
7425 ** May you share freely, never taking more than you give.
7426 **
7427 *************************************************************************
7428 ** Internal interface definitions for SQLite.
7429 **
7430 */
7431 #ifndef _SQLITEINT_H_
7432 #define _SQLITEINT_H_
7433
7434 /*
7435 ** These #defines should enable >2GB file support on POSIX if the
7436 ** underlying operating system supports it. If the OS lacks
7437 ** large file support, or if the OS is windows, these should be no-ops.
7438 **
7439 ** Ticket #2739: The _LARGEFILE_SOURCE macro must appear before any
7440 ** system #includes. Hence, this block of code must be the very first
7441 ** code in all source files.
7442 **
7443 ** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
7444 ** on the compiler command line. This is necessary if you are compiling
7445 ** on a recent machine (ex: Red Hat 7.2) but you want your code to work
7446 ** on an older machine (ex: Red Hat 6.0). If you compile on Red Hat 7.2
7447 ** without this option, LFS is enable. But LFS does not exist in the kernel
7448 ** in Red Hat 6.0, so the code won't work. Hence, for maximum binary
7449 ** portability you should omit LFS.
7450 **
7451 ** Similar is true for Mac OS X. LFS is only supported on Mac OS X 9 and later.
7452 */
7453 #ifndef SQLITE_DISABLE_LFS
7454 # define _LARGE_FILE 1
7455 # ifndef _FILE_OFFSET_BITS
7456 # define _FILE_OFFSET_BITS 64
7457 # endif
7458 # define _LARGEFILE_SOURCE 1
7459 #endif
7460
7461 /*
7462 ** For MinGW, check to see if we can include the header file containing its
7463 ** version information, among other things. Normally, this internal MinGW
7464 ** header file would [only] be included automatically by other MinGW header
@@ -23462,36 +23473,10 @@
23462 # else
23463 # define OS_VXWORKS 0
23464 # endif
23465 #endif
23466
23467 /*
23468 ** These #defines should enable >2GB file support on Posix if the
23469 ** underlying operating system supports it. If the OS lacks
23470 ** large file support, these should be no-ops.
23471 **
23472 ** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
23473 ** on the compiler command line. This is necessary if you are compiling
23474 ** on a recent machine (ex: RedHat 7.2) but you want your code to work
23475 ** on an older machine (ex: RedHat 6.0). If you compile on RedHat 7.2
23476 ** without this option, LFS is enable. But LFS does not exist in the kernel
23477 ** in RedHat 6.0, so the code won't work. Hence, for maximum binary
23478 ** portability you should omit LFS.
23479 **
23480 ** The previous paragraph was written in 2005. (This paragraph is written
23481 ** on 2008-11-28.) These days, all Linux kernels support large files, so
23482 ** you should probably leave LFS enabled. But some embedded platforms might
23483 ** lack LFS in which case the SQLITE_DISABLE_LFS macro might still be useful.
23484 */
23485 #ifndef SQLITE_DISABLE_LFS
23486 # define _LARGE_FILE 1
23487 # ifndef _FILE_OFFSET_BITS
23488 # define _FILE_OFFSET_BITS 64
23489 # endif
23490 # define _LARGEFILE_SOURCE 1
23491 #endif
23492
23493 /*
23494 ** standard include files.
23495 */
23496 #include <sys/types.h>
23497 #include <sys/stat.h>
23498
--- src/sqlite3.c
+++ src/sqlite3.c
@@ -23,10 +23,64 @@
23 # define SQLITE_PRIVATE static
24 #endif
25 #ifndef SQLITE_API
26 # define SQLITE_API
27 #endif
28 /************** Begin file sqliteInt.h ***************************************/
29 /*
30 ** 2001 September 15
31 **
32 ** The author disclaims copyright to this source code. In place of
33 ** a legal notice, here is a blessing:
34 **
35 ** May you do good and not evil.
36 ** May you find forgiveness for yourself and forgive others.
37 ** May you share freely, never taking more than you give.
38 **
39 *************************************************************************
40 ** Internal interface definitions for SQLite.
41 **
42 */
43 #ifndef _SQLITEINT_H_
44 #define _SQLITEINT_H_
45
46 /*
47 ** These #defines should enable >2GB file support on POSIX if the
48 ** underlying operating system supports it. If the OS lacks
49 ** large file support, or if the OS is windows, these should be no-ops.
50 **
51 ** Ticket #2739: The _LARGEFILE_SOURCE macro must appear before any
52 ** system #includes. Hence, this block of code must be the very first
53 ** code in all source files.
54 **
55 ** Large file support can be disabled using the -DSQLITE_DISABLE_LFS switch
56 ** on the compiler command line. This is necessary if you are compiling
57 ** on a recent machine (ex: Red Hat 7.2) but you want your code to work
58 ** on an older machine (ex: Red Hat 6.0). If you compile on Red Hat 7.2
59 ** without this option, LFS is enable. But LFS does not exist in the kernel
60 ** in Red Hat 6.0, so the code won't work. Hence, for maximum binary
61 ** portability you should omit LFS.
62 **
63 ** The previous paragraph was written in 2005. (This paragraph is written
64 ** on 2008-11-28.) These days, all Linux kernels support large files, so
65 ** you should probably leave LFS enabled. But some embedded platforms might
66 ** lack LFS in which case the SQLITE_DISABLE_LFS macro might still be useful.
67 **
68 ** Similar is true for Mac OS X. LFS is only supported on Mac OS X 9 and later.
69 */
70 #ifndef SQLITE_DISABLE_LFS
71 # define _LARGE_FILE 1
72 # ifndef _FILE_OFFSET_BITS
73 # define _FILE_OFFSET_BITS 64
74 # endif
75 # define _LARGEFILE_SOURCE 1
76 #endif
77
78 /* The public SQLite interface. The _FILE_OFFSET_BITS macro must appear
79 ** first in QNX.
80 */
81 /************** Include sqlite3.h in the middle of sqliteInt.h ***************/
82 /************** Begin file sqlite3.h *****************************************/
83 /*
84 ** 2001 September 15
85 **
86 ** The author disclaims copyright to this source code. In place of
@@ -7411,54 +7465,11 @@
7465
7466 #endif /* ifndef _SQLITE3RTREE_H_ */
7467
7468
7469 /************** End of sqlite3.h *********************************************/
7470 /************** Continuing where we left off in sqliteInt.h ******************/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7471
7472 /*
7473 ** For MinGW, check to see if we can include the header file containing its
7474 ** version information, among other things. Normally, this internal MinGW
7475 ** header file would [only] be included automatically by other MinGW header
@@ -23462,36 +23473,10 @@
23473 # else
23474 # define OS_VXWORKS 0
23475 # endif
23476 #endif
23477
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23478 /*
23479 ** standard include files.
23480 */
23481 #include <sys/types.h>
23482 #include <sys/stat.h>
23483
+3 -3
--- src/stash.c
+++ src/stash.c
@@ -311,11 +311,11 @@
311311
int isLink = db_column_int(&q, 3);
312312
int isBin1, isBin2;
313313
const char *zOrig = db_column_text(&q, 4);
314314
const char *zNew = db_column_text(&q, 5);
315315
char *zOPath = mprintf("%s%s", g.zLocalRoot, zOrig);
316
- Blob delta, a, b, disk;
316
+ Blob a, b;
317317
if( rid==0 ){
318318
db_ephemeral_blob(&q, 6, &a);
319319
fossil_print("ADDED %s\n", zNew);
320320
diff_print_index(zNew, diffFlags);
321321
isBin1 = 0;
@@ -337,10 +337,11 @@
337337
isBin1 = fIncludeBinary ? 0 : looks_like_binary(&a);
338338
isBin2 = 0;
339339
diff_file_mem(&a, &empty, isBin1, isBin2, zOrig, zDiffCmd,
340340
zBinGlob, fIncludeBinary, diffFlags);
341341
}else{
342
+ Blob delta, disk;
342343
int isOrigLink = file_wd_islink(zOPath);
343344
db_ephemeral_blob(&q, 6, &delta);
344345
if( fBaseline==0 ){
345346
if( isOrigLink ){
346347
blob_read_link(&disk, zOPath);
@@ -363,12 +364,12 @@
363364
zDiffCmd, zBinGlob, fIncludeBinary, diffFlags);
364365
blob_reset(&a);
365366
blob_reset(&b);
366367
}
367368
if( !fBaseline ) blob_reset(&disk);
369
+ blob_reset(&delta);
368370
}
369
- blob_reset(&delta);
370371
}
371372
db_finalize(&q);
372373
}
373374
374375
/*
@@ -568,11 +569,10 @@
568569
if( memcmp(zCmd, "drop", nCmd)==0 || memcmp(zCmd, "rm", nCmd)==0 ){
569570
int allFlag = find_option("all", "a", 0)!=0;
570571
if( allFlag ){
571572
Blob ans;
572573
char cReply;
573
- blob_zero(&ans);
574574
prompt_user("This action is not undoable. Continue (y/N)? ", &ans);
575575
cReply = blob_str(&ans)[0];
576576
if( cReply=='y' || cReply=='Y' ){
577577
db_multi_exec("DELETE FROM stash; DELETE FROM stashfile;");
578578
}
579579
--- src/stash.c
+++ src/stash.c
@@ -311,11 +311,11 @@
311 int isLink = db_column_int(&q, 3);
312 int isBin1, isBin2;
313 const char *zOrig = db_column_text(&q, 4);
314 const char *zNew = db_column_text(&q, 5);
315 char *zOPath = mprintf("%s%s", g.zLocalRoot, zOrig);
316 Blob delta, a, b, disk;
317 if( rid==0 ){
318 db_ephemeral_blob(&q, 6, &a);
319 fossil_print("ADDED %s\n", zNew);
320 diff_print_index(zNew, diffFlags);
321 isBin1 = 0;
@@ -337,10 +337,11 @@
337 isBin1 = fIncludeBinary ? 0 : looks_like_binary(&a);
338 isBin2 = 0;
339 diff_file_mem(&a, &empty, isBin1, isBin2, zOrig, zDiffCmd,
340 zBinGlob, fIncludeBinary, diffFlags);
341 }else{
 
342 int isOrigLink = file_wd_islink(zOPath);
343 db_ephemeral_blob(&q, 6, &delta);
344 if( fBaseline==0 ){
345 if( isOrigLink ){
346 blob_read_link(&disk, zOPath);
@@ -363,12 +364,12 @@
363 zDiffCmd, zBinGlob, fIncludeBinary, diffFlags);
364 blob_reset(&a);
365 blob_reset(&b);
366 }
367 if( !fBaseline ) blob_reset(&disk);
 
368 }
369 blob_reset(&delta);
370 }
371 db_finalize(&q);
372 }
373
374 /*
@@ -568,11 +569,10 @@
568 if( memcmp(zCmd, "drop", nCmd)==0 || memcmp(zCmd, "rm", nCmd)==0 ){
569 int allFlag = find_option("all", "a", 0)!=0;
570 if( allFlag ){
571 Blob ans;
572 char cReply;
573 blob_zero(&ans);
574 prompt_user("This action is not undoable. Continue (y/N)? ", &ans);
575 cReply = blob_str(&ans)[0];
576 if( cReply=='y' || cReply=='Y' ){
577 db_multi_exec("DELETE FROM stash; DELETE FROM stashfile;");
578 }
579
--- src/stash.c
+++ src/stash.c
@@ -311,11 +311,11 @@
311 int isLink = db_column_int(&q, 3);
312 int isBin1, isBin2;
313 const char *zOrig = db_column_text(&q, 4);
314 const char *zNew = db_column_text(&q, 5);
315 char *zOPath = mprintf("%s%s", g.zLocalRoot, zOrig);
316 Blob a, b;
317 if( rid==0 ){
318 db_ephemeral_blob(&q, 6, &a);
319 fossil_print("ADDED %s\n", zNew);
320 diff_print_index(zNew, diffFlags);
321 isBin1 = 0;
@@ -337,10 +337,11 @@
337 isBin1 = fIncludeBinary ? 0 : looks_like_binary(&a);
338 isBin2 = 0;
339 diff_file_mem(&a, &empty, isBin1, isBin2, zOrig, zDiffCmd,
340 zBinGlob, fIncludeBinary, diffFlags);
341 }else{
342 Blob delta, disk;
343 int isOrigLink = file_wd_islink(zOPath);
344 db_ephemeral_blob(&q, 6, &delta);
345 if( fBaseline==0 ){
346 if( isOrigLink ){
347 blob_read_link(&disk, zOPath);
@@ -363,12 +364,12 @@
364 zDiffCmd, zBinGlob, fIncludeBinary, diffFlags);
365 blob_reset(&a);
366 blob_reset(&b);
367 }
368 if( !fBaseline ) blob_reset(&disk);
369 blob_reset(&delta);
370 }
 
371 }
372 db_finalize(&q);
373 }
374
375 /*
@@ -568,11 +569,10 @@
569 if( memcmp(zCmd, "drop", nCmd)==0 || memcmp(zCmd, "rm", nCmd)==0 ){
570 int allFlag = find_option("all", "a", 0)!=0;
571 if( allFlag ){
572 Blob ans;
573 char cReply;
 
574 prompt_user("This action is not undoable. Continue (y/N)? ", &ans);
575 cReply = blob_str(&ans)[0];
576 if( cReply=='y' || cReply=='Y' ){
577 db_multi_exec("DELETE FROM stash; DELETE FROM stashfile;");
578 }
579
+11 -13
--- src/update.c
+++ src/update.c
@@ -717,16 +717,12 @@
717717
db_multi_exec(
718718
"REPLACE INTO torevert VALUES(%B);"
719719
"INSERT OR IGNORE INTO torevert"
720720
" SELECT pathname"
721721
" FROM vfile"
722
- " WHERE origname IN(%B)"
723
- " UNION ALL"
724
- " SELECT origname"
725
- " FROM vfile"
726
- " WHERE pathname IN(%B) AND origname IS NOT NULL;",
727
- &fname, &fname, &fname
722
+ " WHERE origname=%B;",
723
+ &fname, &fname
728724
);
729725
blob_reset(&fname);
730726
}
731727
}else{
732728
int vid;
@@ -735,17 +731,19 @@
735731
db_multi_exec(
736732
"DELETE FROM vmerge;"
737733
"INSERT OR IGNORE INTO torevert "
738734
" SELECT pathname"
739735
" FROM vfile "
740
- " WHERE chnged OR deleted OR rid=0 OR pathname!=origname "
741
- " UNION ALL "
742
- " SELECT origname"
743
- " FROM vfile"
744
- " WHERE origname!=pathname;"
736
+ " WHERE chnged OR deleted OR rid=0 OR pathname!=origname;"
745737
);
746738
}
739
+ db_multi_exec(
740
+ "INSERT OR IGNORE INTO torevert"
741
+ " SELECT origname"
742
+ " FROM vfile"
743
+ " WHERE origname!=pathname AND pathname IN (SELECT name FROM torevert);"
744
+ );
747745
blob_zero(&record);
748746
db_prepare(&q, "SELECT name FROM torevert");
749747
if( zRevision==0 ){
750748
int vid = db_lget_int("checkout", 0);
751749
zRevision = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid);
@@ -766,13 +764,13 @@
766764
undo_save(zFile);
767765
file_delete(zFull);
768766
fossil_print("DELETE: %s\n", zFile);
769767
}
770768
db_multi_exec(
771
- "UPDATE vfile"
769
+ "UPDATE OR REPLACE vfile"
772770
" SET pathname=origname, origname=NULL"
773
- " WHERE pathname=%Q AND origname!=pathname AND origname IS NOT NULL;"
771
+ " WHERE pathname=%Q AND origname!=pathname;"
774772
"DELETE FROM vfile WHERE pathname=%Q",
775773
zFile, zFile
776774
);
777775
}else{
778776
sqlite3_int64 mtime;
779777
--- src/update.c
+++ src/update.c
@@ -717,16 +717,12 @@
717 db_multi_exec(
718 "REPLACE INTO torevert VALUES(%B);"
719 "INSERT OR IGNORE INTO torevert"
720 " SELECT pathname"
721 " FROM vfile"
722 " WHERE origname IN(%B)"
723 " UNION ALL"
724 " SELECT origname"
725 " FROM vfile"
726 " WHERE pathname IN(%B) AND origname IS NOT NULL;",
727 &fname, &fname, &fname
728 );
729 blob_reset(&fname);
730 }
731 }else{
732 int vid;
@@ -735,17 +731,19 @@
735 db_multi_exec(
736 "DELETE FROM vmerge;"
737 "INSERT OR IGNORE INTO torevert "
738 " SELECT pathname"
739 " FROM vfile "
740 " WHERE chnged OR deleted OR rid=0 OR pathname!=origname "
741 " UNION ALL "
742 " SELECT origname"
743 " FROM vfile"
744 " WHERE origname!=pathname;"
745 );
746 }
 
 
 
 
 
 
747 blob_zero(&record);
748 db_prepare(&q, "SELECT name FROM torevert");
749 if( zRevision==0 ){
750 int vid = db_lget_int("checkout", 0);
751 zRevision = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid);
@@ -766,13 +764,13 @@
766 undo_save(zFile);
767 file_delete(zFull);
768 fossil_print("DELETE: %s\n", zFile);
769 }
770 db_multi_exec(
771 "UPDATE vfile"
772 " SET pathname=origname, origname=NULL"
773 " WHERE pathname=%Q AND origname!=pathname AND origname IS NOT NULL;"
774 "DELETE FROM vfile WHERE pathname=%Q",
775 zFile, zFile
776 );
777 }else{
778 sqlite3_int64 mtime;
779
--- src/update.c
+++ src/update.c
@@ -717,16 +717,12 @@
717 db_multi_exec(
718 "REPLACE INTO torevert VALUES(%B);"
719 "INSERT OR IGNORE INTO torevert"
720 " SELECT pathname"
721 " FROM vfile"
722 " WHERE origname=%B;",
723 &fname, &fname
 
 
 
 
724 );
725 blob_reset(&fname);
726 }
727 }else{
728 int vid;
@@ -735,17 +731,19 @@
731 db_multi_exec(
732 "DELETE FROM vmerge;"
733 "INSERT OR IGNORE INTO torevert "
734 " SELECT pathname"
735 " FROM vfile "
736 " WHERE chnged OR deleted OR rid=0 OR pathname!=origname;"
 
 
 
 
737 );
738 }
739 db_multi_exec(
740 "INSERT OR IGNORE INTO torevert"
741 " SELECT origname"
742 " FROM vfile"
743 " WHERE origname!=pathname AND pathname IN (SELECT name FROM torevert);"
744 );
745 blob_zero(&record);
746 db_prepare(&q, "SELECT name FROM torevert");
747 if( zRevision==0 ){
748 int vid = db_lget_int("checkout", 0);
749 zRevision = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid);
@@ -766,13 +764,13 @@
764 undo_save(zFile);
765 file_delete(zFull);
766 fossil_print("DELETE: %s\n", zFile);
767 }
768 db_multi_exec(
769 "UPDATE OR REPLACE vfile"
770 " SET pathname=origname, origname=NULL"
771 " WHERE pathname=%Q AND origname!=pathname;"
772 "DELETE FROM vfile WHERE pathname=%Q",
773 zFile, zFile
774 );
775 }else{
776 sqlite3_int64 mtime;
777
+23 -3
--- src/vfile.c
+++ src/vfile.c
@@ -486,15 +486,25 @@
486486
blob_appendf(pPath, "/%s", zUtf8);
487487
zPath = blob_str(pPath);
488488
if( glob_match(pIgnore1, &zPath[nPrefix+1]) ||
489489
glob_match(pIgnore2, &zPath[nPrefix+1]) ){
490490
/* do nothing */
491
+#ifdef _DIRENT_HAVE_D_TYPE
492
+ }else if( (pEntry->d_type==DT_UNKNOWN || pEntry->d_type==DT_LNK)
493
+ ? (file_wd_isdir(zPath)==1) : (pEntry->d_type==DT_DIR) ){
494
+#else
491495
}else if( file_wd_isdir(zPath)==1 ){
496
+#endif
492497
if( !vfile_top_of_checkout(zPath) ){
493498
vfile_scan(pPath, nPrefix, scanFlags, pIgnore1, pIgnore2);
494499
}
500
+#ifdef _DIRENT_HAVE_D_TYPE
501
+ }else if( (pEntry->d_type==DT_UNKNOWN || pEntry->d_type==DT_LNK)
502
+ ? (file_wd_isfile_or_link(zPath)) : (pEntry->d_type==DT_REG) ){
503
+#else
495504
}else if( file_wd_isfile_or_link(zPath) ){
505
+#endif
496506
if( (scanFlags & SCAN_TEMP)==0 || is_temporary_file(zUtf8) ){
497507
db_bind_text(&ins, ":file", &zPath[nPrefix+1]);
498508
db_step(&ins);
499509
db_reset(&ins);
500510
}
@@ -593,11 +603,16 @@
593603
zPath = blob_str(pPath);
594604
if( glob_match(pIgnore1, &zPath[nPrefix+1]) ||
595605
glob_match(pIgnore2, &zPath[nPrefix+1]) ||
596606
glob_match(pIgnore3, &zPath[nPrefix+1]) ){
597607
/* do nothing */
608
+#ifdef _DIRENT_HAVE_D_TYPE
609
+ }else if( (pEntry->d_type==DT_UNKNOWN || pEntry->d_type==DT_LNK)
610
+ ? (file_wd_isdir(zPath)==1) : (pEntry->d_type==DT_DIR) ){
611
+#else
598612
}else if( file_wd_isdir(zPath)==1 ){
613
+#endif
599614
if( (scanFlags & SCAN_NESTED) || !vfile_top_of_checkout(zPath) ){
600615
char *zSavePath = mprintf("%s", zPath);
601616
int count = vfile_dir_scan(pPath, nPrefix, scanFlags, pIgnore1,
602617
pIgnore2, pIgnore3);
603618
db_bind_text(&ins, ":file", &zSavePath[nPrefix+1]);
@@ -605,11 +620,16 @@
605620
db_step(&ins);
606621
db_reset(&ins);
607622
fossil_free(zSavePath);
608623
result += count; /* found X normal files? */
609624
}
625
+#ifdef _DIRENT_HAVE_D_TYPE
626
+ }else if( (pEntry->d_type==DT_UNKNOWN || pEntry->d_type==DT_LNK)
627
+ ? (file_wd_isfile_or_link(zPath)) : (pEntry->d_type==DT_REG) ){
628
+#else
610629
}else if( file_wd_isfile_or_link(zPath) ){
630
+#endif
611631
db_bind_text(&upd, ":file", zOrigPath);
612632
db_step(&upd);
613633
db_reset(&upd);
614634
result++; /* found 1 normal file */
615635
}
@@ -704,11 +724,11 @@
704724
const char *zOrigName = db_column_text(&q, 2);
705725
char zBuf[100];
706726
Blob file;
707727
708728
if( zOrigName ) zName = zOrigName;
709
- if( rid>0 ){
729
+ if( rid>0 || vid==0 ){
710730
md5sum_step_text(zName, -1);
711731
blob_zero(&file);
712732
content_get(rid, &file);
713733
sqlite3_snprintf(sizeof(zBuf), zBuf, " %d\n", blob_size(&file));
714734
md5sum_step_text(zBuf, -1);
@@ -813,13 +833,13 @@
813833
db_must_be_within_tree();
814834
815835
db_prepare(&q, "SELECT pathname, origname, rid, is_selected(id)"
816836
" FROM vfile"
817837
" WHERE (NOT deleted OR NOT is_selected(id))"
818
- " AND rid>0 AND vid=%d"
838
+ " %s AND vid=%d"
819839
" ORDER BY if_selected(id,pathname,origname) /*scan*/",
820
- vid);
840
+ (vid ? "AND rid>0" : ""), vid);
821841
blob_zero(&file);
822842
md5sum_init();
823843
while( db_step(&q)==SQLITE_ROW ){
824844
const char *zName = db_column_text(&q, 0);
825845
const char *zOrigName = db_column_text(&q, 1);
826846
--- src/vfile.c
+++ src/vfile.c
@@ -486,15 +486,25 @@
486 blob_appendf(pPath, "/%s", zUtf8);
487 zPath = blob_str(pPath);
488 if( glob_match(pIgnore1, &zPath[nPrefix+1]) ||
489 glob_match(pIgnore2, &zPath[nPrefix+1]) ){
490 /* do nothing */
 
 
 
 
491 }else if( file_wd_isdir(zPath)==1 ){
 
492 if( !vfile_top_of_checkout(zPath) ){
493 vfile_scan(pPath, nPrefix, scanFlags, pIgnore1, pIgnore2);
494 }
 
 
 
 
495 }else if( file_wd_isfile_or_link(zPath) ){
 
496 if( (scanFlags & SCAN_TEMP)==0 || is_temporary_file(zUtf8) ){
497 db_bind_text(&ins, ":file", &zPath[nPrefix+1]);
498 db_step(&ins);
499 db_reset(&ins);
500 }
@@ -593,11 +603,16 @@
593 zPath = blob_str(pPath);
594 if( glob_match(pIgnore1, &zPath[nPrefix+1]) ||
595 glob_match(pIgnore2, &zPath[nPrefix+1]) ||
596 glob_match(pIgnore3, &zPath[nPrefix+1]) ){
597 /* do nothing */
 
 
 
 
598 }else if( file_wd_isdir(zPath)==1 ){
 
599 if( (scanFlags & SCAN_NESTED) || !vfile_top_of_checkout(zPath) ){
600 char *zSavePath = mprintf("%s", zPath);
601 int count = vfile_dir_scan(pPath, nPrefix, scanFlags, pIgnore1,
602 pIgnore2, pIgnore3);
603 db_bind_text(&ins, ":file", &zSavePath[nPrefix+1]);
@@ -605,11 +620,16 @@
605 db_step(&ins);
606 db_reset(&ins);
607 fossil_free(zSavePath);
608 result += count; /* found X normal files? */
609 }
 
 
 
 
610 }else if( file_wd_isfile_or_link(zPath) ){
 
611 db_bind_text(&upd, ":file", zOrigPath);
612 db_step(&upd);
613 db_reset(&upd);
614 result++; /* found 1 normal file */
615 }
@@ -704,11 +724,11 @@
704 const char *zOrigName = db_column_text(&q, 2);
705 char zBuf[100];
706 Blob file;
707
708 if( zOrigName ) zName = zOrigName;
709 if( rid>0 ){
710 md5sum_step_text(zName, -1);
711 blob_zero(&file);
712 content_get(rid, &file);
713 sqlite3_snprintf(sizeof(zBuf), zBuf, " %d\n", blob_size(&file));
714 md5sum_step_text(zBuf, -1);
@@ -813,13 +833,13 @@
813 db_must_be_within_tree();
814
815 db_prepare(&q, "SELECT pathname, origname, rid, is_selected(id)"
816 " FROM vfile"
817 " WHERE (NOT deleted OR NOT is_selected(id))"
818 " AND rid>0 AND vid=%d"
819 " ORDER BY if_selected(id,pathname,origname) /*scan*/",
820 vid);
821 blob_zero(&file);
822 md5sum_init();
823 while( db_step(&q)==SQLITE_ROW ){
824 const char *zName = db_column_text(&q, 0);
825 const char *zOrigName = db_column_text(&q, 1);
826
--- src/vfile.c
+++ src/vfile.c
@@ -486,15 +486,25 @@
486 blob_appendf(pPath, "/%s", zUtf8);
487 zPath = blob_str(pPath);
488 if( glob_match(pIgnore1, &zPath[nPrefix+1]) ||
489 glob_match(pIgnore2, &zPath[nPrefix+1]) ){
490 /* do nothing */
491 #ifdef _DIRENT_HAVE_D_TYPE
492 }else if( (pEntry->d_type==DT_UNKNOWN || pEntry->d_type==DT_LNK)
493 ? (file_wd_isdir(zPath)==1) : (pEntry->d_type==DT_DIR) ){
494 #else
495 }else if( file_wd_isdir(zPath)==1 ){
496 #endif
497 if( !vfile_top_of_checkout(zPath) ){
498 vfile_scan(pPath, nPrefix, scanFlags, pIgnore1, pIgnore2);
499 }
500 #ifdef _DIRENT_HAVE_D_TYPE
501 }else if( (pEntry->d_type==DT_UNKNOWN || pEntry->d_type==DT_LNK)
502 ? (file_wd_isfile_or_link(zPath)) : (pEntry->d_type==DT_REG) ){
503 #else
504 }else if( file_wd_isfile_or_link(zPath) ){
505 #endif
506 if( (scanFlags & SCAN_TEMP)==0 || is_temporary_file(zUtf8) ){
507 db_bind_text(&ins, ":file", &zPath[nPrefix+1]);
508 db_step(&ins);
509 db_reset(&ins);
510 }
@@ -593,11 +603,16 @@
603 zPath = blob_str(pPath);
604 if( glob_match(pIgnore1, &zPath[nPrefix+1]) ||
605 glob_match(pIgnore2, &zPath[nPrefix+1]) ||
606 glob_match(pIgnore3, &zPath[nPrefix+1]) ){
607 /* do nothing */
608 #ifdef _DIRENT_HAVE_D_TYPE
609 }else if( (pEntry->d_type==DT_UNKNOWN || pEntry->d_type==DT_LNK)
610 ? (file_wd_isdir(zPath)==1) : (pEntry->d_type==DT_DIR) ){
611 #else
612 }else if( file_wd_isdir(zPath)==1 ){
613 #endif
614 if( (scanFlags & SCAN_NESTED) || !vfile_top_of_checkout(zPath) ){
615 char *zSavePath = mprintf("%s", zPath);
616 int count = vfile_dir_scan(pPath, nPrefix, scanFlags, pIgnore1,
617 pIgnore2, pIgnore3);
618 db_bind_text(&ins, ":file", &zSavePath[nPrefix+1]);
@@ -605,11 +620,16 @@
620 db_step(&ins);
621 db_reset(&ins);
622 fossil_free(zSavePath);
623 result += count; /* found X normal files? */
624 }
625 #ifdef _DIRENT_HAVE_D_TYPE
626 }else if( (pEntry->d_type==DT_UNKNOWN || pEntry->d_type==DT_LNK)
627 ? (file_wd_isfile_or_link(zPath)) : (pEntry->d_type==DT_REG) ){
628 #else
629 }else if( file_wd_isfile_or_link(zPath) ){
630 #endif
631 db_bind_text(&upd, ":file", zOrigPath);
632 db_step(&upd);
633 db_reset(&upd);
634 result++; /* found 1 normal file */
635 }
@@ -704,11 +724,11 @@
724 const char *zOrigName = db_column_text(&q, 2);
725 char zBuf[100];
726 Blob file;
727
728 if( zOrigName ) zName = zOrigName;
729 if( rid>0 || vid==0 ){
730 md5sum_step_text(zName, -1);
731 blob_zero(&file);
732 content_get(rid, &file);
733 sqlite3_snprintf(sizeof(zBuf), zBuf, " %d\n", blob_size(&file));
734 md5sum_step_text(zBuf, -1);
@@ -813,13 +833,13 @@
833 db_must_be_within_tree();
834
835 db_prepare(&q, "SELECT pathname, origname, rid, is_selected(id)"
836 " FROM vfile"
837 " WHERE (NOT deleted OR NOT is_selected(id))"
838 " %s AND vid=%d"
839 " ORDER BY if_selected(id,pathname,origname) /*scan*/",
840 (vid ? "AND rid>0" : ""), vid);
841 blob_zero(&file);
842 md5sum_init();
843 while( db_step(&q)==SQLITE_ROW ){
844 const char *zName = db_column_text(&q, 0);
845 const char *zOrigName = db_column_text(&q, 1);
846
--- test/merge_renames.test
+++ test/merge_renames.test
@@ -1,30 +1,16 @@
11
#
22
# Tests for merging with renames
33
#
44
#
5
-
6
-catch {exec $::fossilexe info} res
7
-puts res=$res
8
-if {![regexp {use --repository} $res]} {
9
- puts stderr "Cannot run this test within an open checkout"
10
- return
11
-}
12
-
13
-
14
-# Fossil will write data on $HOME, running 'fossil new' here.
15
-# We need not to clutter the $HOME of the test caller.
16
-set env(HOME) [pwd]
17
-
185
196
######################################
207
# Test 1 #
218
# Reported: Ticket [554f44ee74e3d] #
229
######################################
2310
24
-fossil new rep.fossil
25
-fossil open rep.fossil
11
+repo_init
2612
2713
write_file f1 "line"
2814
fossil add f1
2915
fossil commit -m "c1"
3016
fossil tag add pivot current
@@ -73,20 +59,16 @@
7359
test merge_renames-1 0
7460
} else {
7561
test merge_renames-1 1
7662
}
7763
78
-fossil close -f
79
-file delete rep.fossil
80
-
8164
######################################
8265
# Test 2 #
8366
# Reported: Ticket [74413366fe5067] #
8467
######################################
8568
86
-fossil new rep.fossil
87
-fossil open rep.fossil
69
+repo_init
8870
8971
write_file f1 "line"
9072
fossil add f1
9173
fossil commit -m "base file"
9274
fossil tag add pivot current
@@ -125,20 +107,16 @@
125107
test merge_renames-2 0
126108
} else {
127109
test merge_renames-2 1
128110
}
129111
130
-fossil close -f
131
-file delete rep.fossil
132
-
133112
######################################
134113
# Test 3 #
135114
# Reported: Ticket [30b28cf351] #
136115
######################################
137116
138
-fossil new rep.fossil
139
-fossil open rep.fossil
117
+repo_init
140118
141119
write_file f1 "line"
142120
fossil add f1
143121
fossil commit -m "base file"
144122
fossil tag add pivot current
@@ -177,13 +155,10 @@
177155
test merge_renames-2 0
178156
} else {
179157
test merge_renames-2 1
180158
}
181159
182
-fossil close -f
183
-file delete rep.fossil
184
-
185160
######################################
186161
# Test 4 #
187162
# Reported: Ticket [67176c3aa4] #
188163
######################################
189164
190165
--- test/merge_renames.test
+++ test/merge_renames.test
@@ -1,30 +1,16 @@
1 #
2 # Tests for merging with renames
3 #
4 #
5
6 catch {exec $::fossilexe info} res
7 puts res=$res
8 if {![regexp {use --repository} $res]} {
9 puts stderr "Cannot run this test within an open checkout"
10 return
11 }
12
13
14 # Fossil will write data on $HOME, running 'fossil new' here.
15 # We need not to clutter the $HOME of the test caller.
16 set env(HOME) [pwd]
17
18
19 ######################################
20 # Test 1 #
21 # Reported: Ticket [554f44ee74e3d] #
22 ######################################
23
24 fossil new rep.fossil
25 fossil open rep.fossil
26
27 write_file f1 "line"
28 fossil add f1
29 fossil commit -m "c1"
30 fossil tag add pivot current
@@ -73,20 +59,16 @@
73 test merge_renames-1 0
74 } else {
75 test merge_renames-1 1
76 }
77
78 fossil close -f
79 file delete rep.fossil
80
81 ######################################
82 # Test 2 #
83 # Reported: Ticket [74413366fe5067] #
84 ######################################
85
86 fossil new rep.fossil
87 fossil open rep.fossil
88
89 write_file f1 "line"
90 fossil add f1
91 fossil commit -m "base file"
92 fossil tag add pivot current
@@ -125,20 +107,16 @@
125 test merge_renames-2 0
126 } else {
127 test merge_renames-2 1
128 }
129
130 fossil close -f
131 file delete rep.fossil
132
133 ######################################
134 # Test 3 #
135 # Reported: Ticket [30b28cf351] #
136 ######################################
137
138 fossil new rep.fossil
139 fossil open rep.fossil
140
141 write_file f1 "line"
142 fossil add f1
143 fossil commit -m "base file"
144 fossil tag add pivot current
@@ -177,13 +155,10 @@
177 test merge_renames-2 0
178 } else {
179 test merge_renames-2 1
180 }
181
182 fossil close -f
183 file delete rep.fossil
184
185 ######################################
186 # Test 4 #
187 # Reported: Ticket [67176c3aa4] #
188 ######################################
189
190
--- test/merge_renames.test
+++ test/merge_renames.test
@@ -1,30 +1,16 @@
1 #
2 # Tests for merging with renames
3 #
4 #
 
 
 
 
 
 
 
 
 
 
 
 
 
5
6 ######################################
7 # Test 1 #
8 # Reported: Ticket [554f44ee74e3d] #
9 ######################################
10
11 repo_init
 
12
13 write_file f1 "line"
14 fossil add f1
15 fossil commit -m "c1"
16 fossil tag add pivot current
@@ -73,20 +59,16 @@
59 test merge_renames-1 0
60 } else {
61 test merge_renames-1 1
62 }
63
 
 
 
64 ######################################
65 # Test 2 #
66 # Reported: Ticket [74413366fe5067] #
67 ######################################
68
69 repo_init
 
70
71 write_file f1 "line"
72 fossil add f1
73 fossil commit -m "base file"
74 fossil tag add pivot current
@@ -125,20 +107,16 @@
107 test merge_renames-2 0
108 } else {
109 test merge_renames-2 1
110 }
111
 
 
 
112 ######################################
113 # Test 3 #
114 # Reported: Ticket [30b28cf351] #
115 ######################################
116
117 repo_init
 
118
119 write_file f1 "line"
120 fossil add f1
121 fossil commit -m "base file"
122 fossil tag add pivot current
@@ -177,13 +155,10 @@
155 test merge_renames-2 0
156 } else {
157 test merge_renames-2 1
158 }
159
 
 
 
160 ######################################
161 # Test 4 #
162 # Reported: Ticket [67176c3aa4] #
163 ######################################
164
165
+59 -55
--- test/revert.test
+++ test/revert.test
@@ -1,65 +1,30 @@
11
#
22
# Tests for 'fossil revert'
33
#
44
#
55
6
-catch {exec $::fossilexe info} res
7
-puts res=$res
8
-if {![regexp {use --repository} $res]} {
9
- puts stderr "Cannot run this test within an open checkout"
10
- return
11
-}
12
-
13
-# Fossil will write data on $HOME, running 'fossil new' here.
14
-# We need not to clutter the $HOME of the test caller.
15
-#
16
-set env(HOME) [pwd]
17
-
18
-
19
-# Normalize file status lists (like those returned by 'fossil changes')
20
-# so they can be compared using simple string comparison
21
-#
22
-proc normalize-status-list {list} {
23
- set normalized [list]
24
- set matches [regexp -all -inline -line {^\s*([A-Z]+)\s+(.*)$} $list]
25
- foreach {_ status file} $matches {
26
- lappend normalized [list $status [string trim $file]]
27
- }
28
- set normalized [lsort -index 1 $normalized]
29
- return $normalized
30
-}
31
-
326
# Test 'fossil revert' against expected results from 'fossil changes' and
33
-# 'fossil addremove --test', as well as by verifying the existence of files
7
+# 'fossil addremove -n', as well as by verifying the existence of files
348
# on the file system. 'fossil undo' is called after each test
359
#
36
-proc revert-test {testid args} {
10
+proc revert-test {testid revertArgs expectedRevertOutput args} {
3711
global RESULT
3812
set passed 1
3913
40
- if {[llength $args] % 2} {
41
- set revertArgs [lindex $args 0]
42
- set args [lrange $args 1 end]
43
- } else {
44
- set revertArgs {}
45
- }
4614
set args [dict merge {
4715
-changes {} -addremove {} -exists {} -notexists {}
4816
} $args]
4917
50
- fossil revert {*}$revertArgs
18
+ set result [fossil revert {*}$revertArgs]
19
+ test_status_list revert-$testid $result $expectedRevertOutput
5120
52
- set statusListTests [list -changes changes -addremove {addremove --test}]
21
+ set statusListTests [list -changes changes -addremove {addremove -n}]
5322
foreach {key fossilArgs} $statusListTests {
54
- set expected [normalize-status-list [dict get $args $key]]
55
- set result [normalize-status-list [fossil {*}$fossilArgs]]
56
- if {$result ne $expected} {
57
- set passed 0
58
- protOut " Expected:\n [join $expected "\n "]"
59
- protOut " Got:\n [join $result "\n "]"
60
- }
23
+ set expected [dict get $args $key]
24
+ set result [fossil {*}$fossilArgs]
25
+ test_status_list revert-$testid$key $result $expected
6126
}
6227
6328
set fileExistsTests [list -exists 1 does -notexists 0 should]
6429
foreach {key expected verb} $fileExistsTests {
6530
foreach path [dict get $args $key] {
@@ -66,20 +31,17 @@
6631
if {[file exists $path] != $expected} {
6732
set passed 0
6833
protOut " Failure: File $verb not exist: $path"
6934
}
7035
}
36
+ test revert-$testid$key $passed
7137
}
7238
7339
fossil undo
74
- test revert-$testid $passed
7540
}
7641
77
-# Create the repo
78
-#
79
-fossil new rep.fossil
80
-fossil open rep.fossil
42
+repo_init
8143
8244
# Prepare first commit
8345
#
8446
write_file f1 "f1"
8547
write_file f2 "f2"
@@ -101,53 +63,95 @@
10163
file rename -force f3 f3n
10264
fossil mv f3 f3n
10365
10466
# Test 'fossil revert' with no arguments
10567
#
106
-revert-test 1 -addremove {
68
+revert-test 1-1 {} {
69
+ UNMANAGE: f0
70
+ REVERTED: f1
71
+ REVERTED: f2
72
+ REVERTED: f3
73
+ DELETE: f3n
74
+} -addremove {
10775
ADDED f0
10876
} -exists {f0 f1 f2 f3} -notexists f3n
10977
11078
# Test with a single filename argument
11179
#
112
-revert-test 2 f0 -changes {
80
+revert-test 1-2 f0 {
81
+ UNMANAGE: f0
82
+} -changes {
11383
DELETED f1
11484
EDITED f2
11585
RENAMED f3n
11686
} -addremove {
11787
ADDED f0
11888
} -exists {f0 f2 f3n} -notexists f3
11989
120
-revert-test 3 f1 -changes {
90
+revert-test 1-3 f1 {
91
+ REVERTED: f1
92
+} -changes {
12193
ADDED f0
12294
EDITED f2
12395
RENAMED f3n
12496
} -exists {f0 f1 f2 f3n} -notexists f3
12597
126
-revert-test 4 f2 -changes {
98
+revert-test 1-4 f2 {
99
+ REVERTED: f2
100
+} -changes {
127101
ADDED f0
128102
DELETED f1
129103
RENAMED f3n
130104
} -exists {f0 f2 f3n} -notexists {f1 f3}
131105
132106
# Both files involved in a rename are reverted regardless of which filename
133107
# is used as an argument to 'fossil revert'
134108
#
135
-revert-test 5 f3 -changes {
109
+revert-test 1-5 f3 {
110
+ REVERTED: f3
111
+ DELETE: f3n
112
+} -changes {
136113
ADDED f0
137114
DELETED f1
138115
EDITED f2
139116
} -exists {f0 f2 f3} -notexists {f1 f3n}
140117
141
-revert-test 6 f3n -changes {
118
+revert-test 1-6 f3n {
119
+ REVERTED: f3
120
+ DELETE: f3n
121
+} -changes {
142122
ADDED f0
143123
DELETED f1
144124
EDITED f2
145125
} -exists {f0 f2 f3} -notexists {f1 f3n}
146126
147127
# Test with multiple filename arguments
148128
#
149
-revert-test 7 {f0 f2 f3n} -changes {
129
+revert-test 1-7 {f0 f2 f3n} {
130
+ UNMANAGE: f0
131
+ REVERTED: f2
132
+ REVERTED: f3
133
+ DELETE: f3n
134
+} -changes {
150135
DELETED f1
151136
} -addremove {
152137
ADDED f0
153138
} -exists {f0 f2 f3} -notexists {f1 f3n}
139
+
140
+
141
+# Test reverting the combination of a renamed file and an added file that
142
+# uses the renamed file's original filename.
143
+#
144
+repo_init
145
+write_file f1 "f1"
146
+fossil add f1
147
+fossil commit -m "add f1"
148
+
149
+write_file f1n "f1n"
150
+fossil mv f1 f1n
151
+write_file f1 "f1b"
152
+fossil add f1
153
+
154
+revert-test 2-1 {} {
155
+ REVERTED: f1
156
+ DELETE: f1n
157
+} -exists {f1} -notexists {f1n}
154158
--- test/revert.test
+++ test/revert.test
@@ -1,65 +1,30 @@
1 #
2 # Tests for 'fossil revert'
3 #
4 #
5
6 catch {exec $::fossilexe info} res
7 puts res=$res
8 if {![regexp {use --repository} $res]} {
9 puts stderr "Cannot run this test within an open checkout"
10 return
11 }
12
13 # Fossil will write data on $HOME, running 'fossil new' here.
14 # We need not to clutter the $HOME of the test caller.
15 #
16 set env(HOME) [pwd]
17
18
19 # Normalize file status lists (like those returned by 'fossil changes')
20 # so they can be compared using simple string comparison
21 #
22 proc normalize-status-list {list} {
23 set normalized [list]
24 set matches [regexp -all -inline -line {^\s*([A-Z]+)\s+(.*)$} $list]
25 foreach {_ status file} $matches {
26 lappend normalized [list $status [string trim $file]]
27 }
28 set normalized [lsort -index 1 $normalized]
29 return $normalized
30 }
31
32 # Test 'fossil revert' against expected results from 'fossil changes' and
33 # 'fossil addremove --test', as well as by verifying the existence of files
34 # on the file system. 'fossil undo' is called after each test
35 #
36 proc revert-test {testid args} {
37 global RESULT
38 set passed 1
39
40 if {[llength $args] % 2} {
41 set revertArgs [lindex $args 0]
42 set args [lrange $args 1 end]
43 } else {
44 set revertArgs {}
45 }
46 set args [dict merge {
47 -changes {} -addremove {} -exists {} -notexists {}
48 } $args]
49
50 fossil revert {*}$revertArgs
 
51
52 set statusListTests [list -changes changes -addremove {addremove --test}]
53 foreach {key fossilArgs} $statusListTests {
54 set expected [normalize-status-list [dict get $args $key]]
55 set result [normalize-status-list [fossil {*}$fossilArgs]]
56 if {$result ne $expected} {
57 set passed 0
58 protOut " Expected:\n [join $expected "\n "]"
59 protOut " Got:\n [join $result "\n "]"
60 }
61 }
62
63 set fileExistsTests [list -exists 1 does -notexists 0 should]
64 foreach {key expected verb} $fileExistsTests {
65 foreach path [dict get $args $key] {
@@ -66,20 +31,17 @@
66 if {[file exists $path] != $expected} {
67 set passed 0
68 protOut " Failure: File $verb not exist: $path"
69 }
70 }
 
71 }
72
73 fossil undo
74 test revert-$testid $passed
75 }
76
77 # Create the repo
78 #
79 fossil new rep.fossil
80 fossil open rep.fossil
81
82 # Prepare first commit
83 #
84 write_file f1 "f1"
85 write_file f2 "f2"
@@ -101,53 +63,95 @@
101 file rename -force f3 f3n
102 fossil mv f3 f3n
103
104 # Test 'fossil revert' with no arguments
105 #
106 revert-test 1 -addremove {
 
 
 
 
 
 
107 ADDED f0
108 } -exists {f0 f1 f2 f3} -notexists f3n
109
110 # Test with a single filename argument
111 #
112 revert-test 2 f0 -changes {
 
 
113 DELETED f1
114 EDITED f2
115 RENAMED f3n
116 } -addremove {
117 ADDED f0
118 } -exists {f0 f2 f3n} -notexists f3
119
120 revert-test 3 f1 -changes {
 
 
121 ADDED f0
122 EDITED f2
123 RENAMED f3n
124 } -exists {f0 f1 f2 f3n} -notexists f3
125
126 revert-test 4 f2 -changes {
 
 
127 ADDED f0
128 DELETED f1
129 RENAMED f3n
130 } -exists {f0 f2 f3n} -notexists {f1 f3}
131
132 # Both files involved in a rename are reverted regardless of which filename
133 # is used as an argument to 'fossil revert'
134 #
135 revert-test 5 f3 -changes {
 
 
 
136 ADDED f0
137 DELETED f1
138 EDITED f2
139 } -exists {f0 f2 f3} -notexists {f1 f3n}
140
141 revert-test 6 f3n -changes {
 
 
 
142 ADDED f0
143 DELETED f1
144 EDITED f2
145 } -exists {f0 f2 f3} -notexists {f1 f3n}
146
147 # Test with multiple filename arguments
148 #
149 revert-test 7 {f0 f2 f3n} -changes {
 
 
 
 
 
150 DELETED f1
151 } -addremove {
152 ADDED f0
153 } -exists {f0 f2 f3} -notexists {f1 f3n}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
--- test/revert.test
+++ test/revert.test
@@ -1,65 +1,30 @@
1 #
2 # Tests for 'fossil revert'
3 #
4 #
5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6 # Test 'fossil revert' against expected results from 'fossil changes' and
7 # 'fossil addremove -n', as well as by verifying the existence of files
8 # on the file system. 'fossil undo' is called after each test
9 #
10 proc revert-test {testid revertArgs expectedRevertOutput args} {
11 global RESULT
12 set passed 1
13
 
 
 
 
 
 
14 set args [dict merge {
15 -changes {} -addremove {} -exists {} -notexists {}
16 } $args]
17
18 set result [fossil revert {*}$revertArgs]
19 test_status_list revert-$testid $result $expectedRevertOutput
20
21 set statusListTests [list -changes changes -addremove {addremove -n}]
22 foreach {key fossilArgs} $statusListTests {
23 set expected [dict get $args $key]
24 set result [fossil {*}$fossilArgs]
25 test_status_list revert-$testid$key $result $expected
 
 
 
 
26 }
27
28 set fileExistsTests [list -exists 1 does -notexists 0 should]
29 foreach {key expected verb} $fileExistsTests {
30 foreach path [dict get $args $key] {
@@ -66,20 +31,17 @@
31 if {[file exists $path] != $expected} {
32 set passed 0
33 protOut " Failure: File $verb not exist: $path"
34 }
35 }
36 test revert-$testid$key $passed
37 }
38
39 fossil undo
 
40 }
41
42 repo_init
 
 
 
43
44 # Prepare first commit
45 #
46 write_file f1 "f1"
47 write_file f2 "f2"
@@ -101,53 +63,95 @@
63 file rename -force f3 f3n
64 fossil mv f3 f3n
65
66 # Test 'fossil revert' with no arguments
67 #
68 revert-test 1-1 {} {
69 UNMANAGE: f0
70 REVERTED: f1
71 REVERTED: f2
72 REVERTED: f3
73 DELETE: f3n
74 } -addremove {
75 ADDED f0
76 } -exists {f0 f1 f2 f3} -notexists f3n
77
78 # Test with a single filename argument
79 #
80 revert-test 1-2 f0 {
81 UNMANAGE: f0
82 } -changes {
83 DELETED f1
84 EDITED f2
85 RENAMED f3n
86 } -addremove {
87 ADDED f0
88 } -exists {f0 f2 f3n} -notexists f3
89
90 revert-test 1-3 f1 {
91 REVERTED: f1
92 } -changes {
93 ADDED f0
94 EDITED f2
95 RENAMED f3n
96 } -exists {f0 f1 f2 f3n} -notexists f3
97
98 revert-test 1-4 f2 {
99 REVERTED: f2
100 } -changes {
101 ADDED f0
102 DELETED f1
103 RENAMED f3n
104 } -exists {f0 f2 f3n} -notexists {f1 f3}
105
106 # Both files involved in a rename are reverted regardless of which filename
107 # is used as an argument to 'fossil revert'
108 #
109 revert-test 1-5 f3 {
110 REVERTED: f3
111 DELETE: f3n
112 } -changes {
113 ADDED f0
114 DELETED f1
115 EDITED f2
116 } -exists {f0 f2 f3} -notexists {f1 f3n}
117
118 revert-test 1-6 f3n {
119 REVERTED: f3
120 DELETE: f3n
121 } -changes {
122 ADDED f0
123 DELETED f1
124 EDITED f2
125 } -exists {f0 f2 f3} -notexists {f1 f3n}
126
127 # Test with multiple filename arguments
128 #
129 revert-test 1-7 {f0 f2 f3n} {
130 UNMANAGE: f0
131 REVERTED: f2
132 REVERTED: f3
133 DELETE: f3n
134 } -changes {
135 DELETED f1
136 } -addremove {
137 ADDED f0
138 } -exists {f0 f2 f3} -notexists {f1 f3n}
139
140
141 # Test reverting the combination of a renamed file and an added file that
142 # uses the renamed file's original filename.
143 #
144 repo_init
145 write_file f1 "f1"
146 fossil add f1
147 fossil commit -m "add f1"
148
149 write_file f1n "f1n"
150 fossil mv f1 f1n
151 write_file f1 "f1b"
152 fossil add f1
153
154 revert-test 2-1 {} {
155 REVERTED: f1
156 DELETE: f1n
157 } -exists {f1} -notexists {f1n}
158
--- test/tester.tcl
+++ test/tester.tcl
@@ -120,10 +120,57 @@
120120
regsub -all { +\n} $x \n x
121121
set y [read_file $b]
122122
regsub -all { +\n} $y \n y
123123
return [expr {$x==$y}]
124124
}
125
+
126
+# Create and open a new Fossil repository and clean the checkout
127
+#
128
+proc repo_init {{filename ".rep.fossil"}} {
129
+ if {$::env(HOME) ne [pwd]} {
130
+ catch {exec $::fossilexe info} res
131
+ if {![regexp {use --repository} $res]} {
132
+ error "In an open checkout: cannot initialize a new repository here."
133
+ }
134
+ # Fossil will write data on $HOME, running 'fossil new' here.
135
+ # We need not to clutter the $HOME of the test caller.
136
+ #
137
+ set ::env(HOME) [pwd]
138
+ }
139
+ catch {exec $::fossilexe close -f}
140
+ file delete $filename
141
+ exec $::fossilexe new $filename
142
+ exec $::fossilexe open $filename
143
+ exec $::fossilexe clean -f
144
+}
145
+
146
+# Normalize file status lists (like those returned by 'fossil changes')
147
+# so they can be compared using simple string comparison
148
+#
149
+proc normalize_status_list {list} {
150
+ set normalized [list]
151
+ set matches [regexp -all -inline -line {^\s*([A-Z_]+:?)\x20+(\S.*)$} $list]
152
+ foreach {_ status file} $matches {
153
+ lappend normalized [list $status [string trim $file]]
154
+ }
155
+ set normalized [lsort -index 1 $normalized]
156
+ return $normalized
157
+}
158
+
159
+# Perform a test comparing two status lists
160
+#
161
+proc test_status_list {name result expected} {
162
+ set expected [normalize_status_list $expected]
163
+ set result [normalize_status_list $result]
164
+ if {$result eq $expected} {
165
+ test $name 1
166
+ } else {
167
+ protOut " Expected:\n [join $expected "\n "]"
168
+ protOut " Got:\n [join $result "\n "]"
169
+ test $name 0
170
+ }
171
+}
125172
126173
# Perform a test
127174
#
128175
set test_count 0
129176
proc test {name expr} {
130177
--- test/tester.tcl
+++ test/tester.tcl
@@ -120,10 +120,57 @@
120 regsub -all { +\n} $x \n x
121 set y [read_file $b]
122 regsub -all { +\n} $y \n y
123 return [expr {$x==$y}]
124 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
126 # Perform a test
127 #
128 set test_count 0
129 proc test {name expr} {
130
--- test/tester.tcl
+++ test/tester.tcl
@@ -120,10 +120,57 @@
120 regsub -all { +\n} $x \n x
121 set y [read_file $b]
122 regsub -all { +\n} $y \n y
123 return [expr {$x==$y}]
124 }
125
126 # Create and open a new Fossil repository and clean the checkout
127 #
128 proc repo_init {{filename ".rep.fossil"}} {
129 if {$::env(HOME) ne [pwd]} {
130 catch {exec $::fossilexe info} res
131 if {![regexp {use --repository} $res]} {
132 error "In an open checkout: cannot initialize a new repository here."
133 }
134 # Fossil will write data on $HOME, running 'fossil new' here.
135 # We need not to clutter the $HOME of the test caller.
136 #
137 set ::env(HOME) [pwd]
138 }
139 catch {exec $::fossilexe close -f}
140 file delete $filename
141 exec $::fossilexe new $filename
142 exec $::fossilexe open $filename
143 exec $::fossilexe clean -f
144 }
145
146 # Normalize file status lists (like those returned by 'fossil changes')
147 # so they can be compared using simple string comparison
148 #
149 proc normalize_status_list {list} {
150 set normalized [list]
151 set matches [regexp -all -inline -line {^\s*([A-Z_]+:?)\x20+(\S.*)$} $list]
152 foreach {_ status file} $matches {
153 lappend normalized [list $status [string trim $file]]
154 }
155 set normalized [lsort -index 1 $normalized]
156 return $normalized
157 }
158
159 # Perform a test comparing two status lists
160 #
161 proc test_status_list {name result expected} {
162 set expected [normalize_status_list $expected]
163 set result [normalize_status_list $result]
164 if {$result eq $expected} {
165 test $name 1
166 } else {
167 protOut " Expected:\n [join $expected "\n "]"
168 protOut " Got:\n [join $result "\n "]"
169 test $name 0
170 }
171 }
172
173 # Perform a test
174 #
175 set test_count 0
176 proc test {name expr} {
177
+23 -22
--- www/changes.wiki
+++ www/changes.wiki
@@ -7,10 +7,11 @@
77
* The [/reports] page now requires Read ("o") permissions. The "byweek"
88
report now properly propagates the selected year through the event type
99
filter links.
1010
* The [/help/info | info command] now shows leaf status of the checkout.
1111
* Add support for tunneling https through a http proxy (Ticket [e854101c4f]).
12
+ * Add option --empty to the "[/help?cmd=open | fossil open]" command.
1213
1314
<h2>Changes For Version 1.28 (2014-01-27)</h2>
1415
* Enhance [/help?cmd=/reports | /reports] to support event type filtering.
1516
* When cloning a repository, the user name passed via the URL (if any)
1617
is now used as the default local admin user's name.
@@ -26,40 +27,40 @@
2627
Admin/Configuration.
2728
* Fix CGI processing so that it works on web servers that do not
2829
supply REQUEST_URI.
2930
* Add options --dirsonly, --emptydirs, and --allckouts to the
3031
"[/help?cmd=clean | fossil clean]" command.
31
- * Ten-fold performance improvement in large "fossil blame" or
32
+ * Ten-fold performance improvement in large "fossil blame" or
3233
"fossil annotate" commands.
3334
* Add option -W|--width and --offset to "[/help?cmd=timeline | fossil timeline]"
3435
and "[/help?cmd=finfo | fossil finfo]" commands.
3536
* Option -n|--limit of "[/help?cmd=timeline | fossil timeline]" now
3637
specifies the number of entries, just like all other commands which
3738
have the -n|--limit option. The various timeline-related functions
3839
now output "--- ?? limit (??) reached ---" at the end whenever
3940
appropriate. Use "-n 0" if no limit is desired.
4041
* Fix handling of password embedded in Fossil URL.
41
- * New <tt>--once</tt> option to [/help?cmd=clone | fossil clone] command
42
+ * New <tt>--once</tt> option to [/help?cmd=clone | fossil clone] command
4243
which does not store the URL or password when cloning.
4344
* Modify [/help?cmd=ui | fossil ui] to respect "default user" in an open
4445
repository.
4546
* Fossil now hides check-ins that have the "hidden" tag in timeline webpages.
4647
* Enhance <tt>/ci_edit</tt> page to add the "hidden" tag to check-ins.
4748
* Advanced possibilities for commit and ticket change notifications over
4849
http using TH1 scripting.
49
- * Add --sha1sum and --integrate options
50
+ * Add --sha1sum and --integrate options
5051
to the "[/help?cmd=commit | fossil commit]" command.
51
- * Add the "clean" and "extra" subcommands to the
52
+ * Add the "clean" and "extra" subcommands to the
5253
"[/help?cmd=all | fossil all]" command
5354
* Add the --whatif option to "[/help?cmd=clean|fossil clean]" that works the
5455
same as "--dry-run",
5556
so that the name does not collide with the --dry-run option of "fossil all".
5657
* Provide a configuration option to show dates on the web timeline
5758
as "YYMMMDD HH:MM"
5859
* Add an option to the "stats" webpage that allows an administrator to see
5960
the current repository schema.
60
- * Enhancements to the "[/help?cmd=/vdiff|/vdiff]" webpage for more difference
61
+ * Enhancements to the "[/help?cmd=/vdiff|/vdiff]" webpage for more difference
6162
display options.
6263
* Added the "[/tree?ci=trunk&expand | /tree]" webpage as an alternative
6364
to "/dir" and make it the default way of showing file lists.
6465
* Send gzipped HTTP responses to clients that support it.
6566
@@ -118,11 +119,11 @@
118119
See
119120
[http://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-casesensitive]
120121
* Enhancements to /timeline.rss, adding more flags for filtering
121122
results, including the ability to subscribe to changes made
122123
to individual tickets. For example: [/timeline.rss?y=t&tkt=12fceeec82].
123
- * Improved handling of the differences between case-sensitive and
124
+ * Improved handling of the differences between case-sensitive and
124125
case-insensitive filesystems.
125126
* JSON API: added the 'status' command to report local checkout status.
126127
* Fixes to the <tt>--args</tt> support and documented this feature in the help.
127128
* Added [/stats_report] page.
128129
* Added <tt>ym=YYYY-MM</tt> filter to the [/timeline?ym=2013-06].
@@ -136,15 +137,15 @@
136137
137138
<h2>Changes For Version 1.25 (2013-02-16)</h2>
138139
* Enhancements to ticket processing. There are now two tables: TICKET and
139140
TICKETCHNG. There is one row in TICKETCHNG for each ticket artifact.
140141
Fields from ticket artifacts go into either or both of TICKET and
141
- TICKETCHNG, whichever contain matching column names. Default ticket
142
+ TICKETCHNG, whichever contain matching column names. Default ticket
142143
edit and viewing scripts are updated to use TICKETCHNG. The TH1
143144
scripting language is enhanced to support this, including the new
144145
"query" command for doing SQL queries against the repository database.
145
- All changes should be backwards compatible.
146
+ All changes should be backwards compatible.
146147
* Add the ability to moderate ticket and wiki changes. Unmoderated changes
147148
do not sync and may be deleted by the moderator if found to contain spam
148149
or other objectionable content.
149150
* Add javascript so that clicking on a node of the timeline graph selects
150151
that node. Then clicking on a second node shows a diff between the
@@ -157,16 +158,16 @@
157158
* Add the "fossil cat" command which is basically an alias for
158159
"fossil finfo -p".
159160
* Hyperlinks with the class "button" are rendered as submenu buttons
160161
on embedded documentation.
161162
* The check-in comment editor on windows now defaults to NotePad.exe.
162
- * Correctly deal with BOMs in check-in comments. Also attempt to convert
163
+ * Correctly deal with BOMs in check-in comments. Also attempt to convert
163164
check-in comments to UTF8 from other encodings.
164165
* Allow the deletion of multiple stash entries using multiple arguments
165166
to the "fossil stash rm" command.
166167
* Enhance the "fossil server DIRECTORY" command to serve static content
167
- files contained in DIRECTORY. For security, only files with a
168
+ files contained in DIRECTORY. For security, only files with a
168169
recognized suffix (such as *.html, *.jpg, *.txt, etc) will be delivered
169170
as static content, and *.fossil files are not on the list of recognized
170171
suffixes. There are additional restrictions on the names of the files.
171172
* Allow the "fossil ui" command to specify a directory as long as the
172173
the --notfound option is used.
@@ -189,11 +190,11 @@
189190
* Add options to "fossil commit" to override the various sanity checks.
190191
Options added: --allow-empty, --allow-fork, --allow-older, and
191192
--allow-conflict.
192193
* Optionally require a CAPTCHA (controlled by a setting on the
193194
Admin/Access webpage) when a user who is not logged in tries to
194
- edit wiki, or a ticket, or an attachment.
195
+ edit wiki, or a ticket, or an attachment.
195196
* Improvements to the "ssh://" sync protocol, to help it move past
196197
noisey motd comments.
197198
* Add the uf=FILE-SHA1-HASH query parameter to the timeline, causing the
198199
timeline to show only check-ins that contain the specific file identified
199200
by FILE-SHA1-HASH. ("uf" stands for "uses file".)
@@ -302,16 +303,16 @@
302303
* Added the "public-pages" glob pattern that can be configured to allow
303304
anonymous users to see embedded documentation on sites where source
304305
code should not be accessible to anonymous users.
305306
* Allow multiple --tag options on the same "fossil commit" command.
306307
* Change the meaning of the --bgcolor option for "fossil commit" to only
307
- change the color for that one commit. The new --branchcolor option
308
+ change the color for that one commit. The new --branchcolor option
308309
is available to set a persistent background color.
309310
* Add the branch= query parameter to the vdiff page and the --branch option
310311
to the "fossil diff" command.
311312
* Check-in names of the form "root:BRANCH" now refer to the origin of
312
- the branch. Hence to see all changes in a branch, use
313
+ the branch. Hence to see all changes in a branch, use
313314
"fossil diff --from root:BRANCH --to BRANCH". The --branch option on
314315
the diff command is an alias for the same.
315316
* Add the ability to configure ad-units to be displayed between the menu
316317
bar and the content.
317318
* Add the ability to set a background image as part of server configuration.
@@ -318,18 +319,18 @@
318319
* Allow partial commits of cherrypick merges.
319320
* Updates against an uncommitted merge are now a warning, not a fatal error.
320321
* Prompt the user to continue if a check-in comment is unedited.
321322
* Fixes to case sensitivity settings with the /dir webpage.
322323
* Repositories now try to remember the locations of all checkouts and
323
- web-access URLs and display this information with the
324
+ web-access URLs and display this information with the
324325
"fossil info $REPO" command.
325326
* Improved defense against spiders: The src= attribute of
326327
&lt;a&gt; elements is set using javascript after the page loads.
327328
* Enhanced formatting of the user list page.
328329
* If a file named in "fossil add" is missing, that is now a warning instead
329330
of a fatal error.
330
- * Fix side-by-side diff so that it displays correctly with
331
+ * Fix side-by-side diff so that it displays correctly with
331332
multi-byte UTF8 characters.
332333
* Performance improvements in the diff logic.
333334
* Other performance tweaks and documentation updates.
334335
335336
<h2>Changes For Version 1.22 (2012-03-17)</h2>
@@ -338,11 +339,11 @@
338339
* Promote "allow-symlinks" to a versionable setting
339340
* Harden the CGI processing logic against DOS attacks
340341
* Add the ability to run TH1 scripts after sync requests
341342
* Store the repository name in _FOSSIL_ as it is type in the "open" command,
342343
possibly as a relative pathname.
343
- * Make ".fslckout" the alternative name for the "_FOSSIL_" file.
344
+ * Make ".fslckout" the alternative name for the "_FOSSIL_" file.
344345
* Change the "ssh:" transfer method to allow all access regardless of
345346
user permission.
346347
* Improvements to the timeline messages associated with tag changes.
347348
(Requires a "[/help/rebuild | fossil rebuild]" to take effect.)
348349
* Various additions and fixes for the JSON API.
@@ -352,17 +353,17 @@
352353
* Update to use SQLite version 3.7.11.
353354
* Various minor bug fixes.
354355
355356
<h2>Changes For Version 1.21 (2011-12-13)</h2>
356357
* Added side-by-side diffs in the command-line interface
357
- * Automatically enable hyperlinks if the UserAgent string in the
358
+ * Automatically enable hyperlinks if the UserAgent string in the
358359
HTTP header suggests that the requestor is a human and not a bot.
359360
* Show only commonly used commands with "fossil help". Use
360361
"fossil help --all" to see the complete list now.
361
- * Improvements to the "stash" command: (1) Stash all files, not just
362
- those below the working directory. (2) Add the --detail option to
363
- "list". (3) Confirm before "drop --all". (4) Add the "help"
362
+ * Improvements to the "stash" command: (1) Stash all files, not just
363
+ those below the working directory. (2) Add the --detail option to
364
+ "list". (3) Confirm before "drop --all". (4) Add the "help"
364365
subcommand.
365366
* Add an Admin/Access setting to change the number of octets of the
366367
IP address that are saved in login cookies - allowing this setting
367368
to be changed to zero
368369
* Promote the "test-md5sum" command to "md5sum".
@@ -381,11 +382,11 @@
381382
* Added side-by-side diffs in HTML interface. [0bde74ea1e]
382383
* Added support for symlinks. (Controlled by "allow-symlinks" setting,
383384
off by default). [e4f1c1fe95]
384385
* Fixed CLI annotate to show the proper file version in case there
385386
are multiple equal versions in history. [e161670939]
386
- * Timeline now shows tag changes (requires rebuild).[87540ed6e6]
387
+ * Timeline now shows tag changes (requires rebuild).[87540ed6e6]
387388
* Fixed annotate to show "more relevant" versions of lines in
388389
some cases. [e161670939]
389390
* New command: ticket history. [98a855c508]
390391
* Disabled SSLv2 in HTTPS client.[ea1d369d23]
391392
* Fixed constant prompting regarding previously-saved SSL
@@ -396,11 +397,11 @@
396397
always identical for any given checkin. [e080560378]
397398
* A number of minor HTML-related tweaks and fixes.
398399
* Added --args FILENAME global CLI argument to import arbitrary
399400
CLI arguments from a file (e.g. long file lists). [e080560378]
400401
* Fixed significant memory leak in annotation of files with long
401
- histories.[9929bab702]
402
+ histories.[9929bab702]
402403
* Added warnings when a merge operation overwrites local copies
403404
(UNDO is available, but previously this condition normally went
404405
silently unnoticed). [39f979b08c]
405406
* Improved performance when adding many files. [a369dc7721]
406407
* Improve merges which contain many file renames. [0b93b0f958]
407408
--- www/changes.wiki
+++ www/changes.wiki
@@ -7,10 +7,11 @@
7 * The [/reports] page now requires Read ("o") permissions. The "byweek"
8 report now properly propagates the selected year through the event type
9 filter links.
10 * The [/help/info | info command] now shows leaf status of the checkout.
11 * Add support for tunneling https through a http proxy (Ticket [e854101c4f]).
 
12
13 <h2>Changes For Version 1.28 (2014-01-27)</h2>
14 * Enhance [/help?cmd=/reports | /reports] to support event type filtering.
15 * When cloning a repository, the user name passed via the URL (if any)
16 is now used as the default local admin user's name.
@@ -26,40 +27,40 @@
26 Admin/Configuration.
27 * Fix CGI processing so that it works on web servers that do not
28 supply REQUEST_URI.
29 * Add options --dirsonly, --emptydirs, and --allckouts to the
30 "[/help?cmd=clean | fossil clean]" command.
31 * Ten-fold performance improvement in large "fossil blame" or
32 "fossil annotate" commands.
33 * Add option -W|--width and --offset to "[/help?cmd=timeline | fossil timeline]"
34 and "[/help?cmd=finfo | fossil finfo]" commands.
35 * Option -n|--limit of "[/help?cmd=timeline | fossil timeline]" now
36 specifies the number of entries, just like all other commands which
37 have the -n|--limit option. The various timeline-related functions
38 now output "--- ?? limit (??) reached ---" at the end whenever
39 appropriate. Use "-n 0" if no limit is desired.
40 * Fix handling of password embedded in Fossil URL.
41 * New <tt>--once</tt> option to [/help?cmd=clone | fossil clone] command
42 which does not store the URL or password when cloning.
43 * Modify [/help?cmd=ui | fossil ui] to respect "default user" in an open
44 repository.
45 * Fossil now hides check-ins that have the "hidden" tag in timeline webpages.
46 * Enhance <tt>/ci_edit</tt> page to add the "hidden" tag to check-ins.
47 * Advanced possibilities for commit and ticket change notifications over
48 http using TH1 scripting.
49 * Add --sha1sum and --integrate options
50 to the "[/help?cmd=commit | fossil commit]" command.
51 * Add the "clean" and "extra" subcommands to the
52 "[/help?cmd=all | fossil all]" command
53 * Add the --whatif option to "[/help?cmd=clean|fossil clean]" that works the
54 same as "--dry-run",
55 so that the name does not collide with the --dry-run option of "fossil all".
56 * Provide a configuration option to show dates on the web timeline
57 as "YYMMMDD HH:MM"
58 * Add an option to the "stats" webpage that allows an administrator to see
59 the current repository schema.
60 * Enhancements to the "[/help?cmd=/vdiff|/vdiff]" webpage for more difference
61 display options.
62 * Added the "[/tree?ci=trunk&expand | /tree]" webpage as an alternative
63 to "/dir" and make it the default way of showing file lists.
64 * Send gzipped HTTP responses to clients that support it.
65
@@ -118,11 +119,11 @@
118 See
119 [http://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-casesensitive]
120 * Enhancements to /timeline.rss, adding more flags for filtering
121 results, including the ability to subscribe to changes made
122 to individual tickets. For example: [/timeline.rss?y=t&tkt=12fceeec82].
123 * Improved handling of the differences between case-sensitive and
124 case-insensitive filesystems.
125 * JSON API: added the 'status' command to report local checkout status.
126 * Fixes to the <tt>--args</tt> support and documented this feature in the help.
127 * Added [/stats_report] page.
128 * Added <tt>ym=YYYY-MM</tt> filter to the [/timeline?ym=2013-06].
@@ -136,15 +137,15 @@
136
137 <h2>Changes For Version 1.25 (2013-02-16)</h2>
138 * Enhancements to ticket processing. There are now two tables: TICKET and
139 TICKETCHNG. There is one row in TICKETCHNG for each ticket artifact.
140 Fields from ticket artifacts go into either or both of TICKET and
141 TICKETCHNG, whichever contain matching column names. Default ticket
142 edit and viewing scripts are updated to use TICKETCHNG. The TH1
143 scripting language is enhanced to support this, including the new
144 "query" command for doing SQL queries against the repository database.
145 All changes should be backwards compatible.
146 * Add the ability to moderate ticket and wiki changes. Unmoderated changes
147 do not sync and may be deleted by the moderator if found to contain spam
148 or other objectionable content.
149 * Add javascript so that clicking on a node of the timeline graph selects
150 that node. Then clicking on a second node shows a diff between the
@@ -157,16 +158,16 @@
157 * Add the "fossil cat" command which is basically an alias for
158 "fossil finfo -p".
159 * Hyperlinks with the class "button" are rendered as submenu buttons
160 on embedded documentation.
161 * The check-in comment editor on windows now defaults to NotePad.exe.
162 * Correctly deal with BOMs in check-in comments. Also attempt to convert
163 check-in comments to UTF8 from other encodings.
164 * Allow the deletion of multiple stash entries using multiple arguments
165 to the "fossil stash rm" command.
166 * Enhance the "fossil server DIRECTORY" command to serve static content
167 files contained in DIRECTORY. For security, only files with a
168 recognized suffix (such as *.html, *.jpg, *.txt, etc) will be delivered
169 as static content, and *.fossil files are not on the list of recognized
170 suffixes. There are additional restrictions on the names of the files.
171 * Allow the "fossil ui" command to specify a directory as long as the
172 the --notfound option is used.
@@ -189,11 +190,11 @@
189 * Add options to "fossil commit" to override the various sanity checks.
190 Options added: --allow-empty, --allow-fork, --allow-older, and
191 --allow-conflict.
192 * Optionally require a CAPTCHA (controlled by a setting on the
193 Admin/Access webpage) when a user who is not logged in tries to
194 edit wiki, or a ticket, or an attachment.
195 * Improvements to the "ssh://" sync protocol, to help it move past
196 noisey motd comments.
197 * Add the uf=FILE-SHA1-HASH query parameter to the timeline, causing the
198 timeline to show only check-ins that contain the specific file identified
199 by FILE-SHA1-HASH. ("uf" stands for "uses file".)
@@ -302,16 +303,16 @@
302 * Added the "public-pages" glob pattern that can be configured to allow
303 anonymous users to see embedded documentation on sites where source
304 code should not be accessible to anonymous users.
305 * Allow multiple --tag options on the same "fossil commit" command.
306 * Change the meaning of the --bgcolor option for "fossil commit" to only
307 change the color for that one commit. The new --branchcolor option
308 is available to set a persistent background color.
309 * Add the branch= query parameter to the vdiff page and the --branch option
310 to the "fossil diff" command.
311 * Check-in names of the form "root:BRANCH" now refer to the origin of
312 the branch. Hence to see all changes in a branch, use
313 "fossil diff --from root:BRANCH --to BRANCH". The --branch option on
314 the diff command is an alias for the same.
315 * Add the ability to configure ad-units to be displayed between the menu
316 bar and the content.
317 * Add the ability to set a background image as part of server configuration.
@@ -318,18 +319,18 @@
318 * Allow partial commits of cherrypick merges.
319 * Updates against an uncommitted merge are now a warning, not a fatal error.
320 * Prompt the user to continue if a check-in comment is unedited.
321 * Fixes to case sensitivity settings with the /dir webpage.
322 * Repositories now try to remember the locations of all checkouts and
323 web-access URLs and display this information with the
324 "fossil info $REPO" command.
325 * Improved defense against spiders: The src= attribute of
326 &lt;a&gt; elements is set using javascript after the page loads.
327 * Enhanced formatting of the user list page.
328 * If a file named in "fossil add" is missing, that is now a warning instead
329 of a fatal error.
330 * Fix side-by-side diff so that it displays correctly with
331 multi-byte UTF8 characters.
332 * Performance improvements in the diff logic.
333 * Other performance tweaks and documentation updates.
334
335 <h2>Changes For Version 1.22 (2012-03-17)</h2>
@@ -338,11 +339,11 @@
338 * Promote "allow-symlinks" to a versionable setting
339 * Harden the CGI processing logic against DOS attacks
340 * Add the ability to run TH1 scripts after sync requests
341 * Store the repository name in _FOSSIL_ as it is type in the "open" command,
342 possibly as a relative pathname.
343 * Make ".fslckout" the alternative name for the "_FOSSIL_" file.
344 * Change the "ssh:" transfer method to allow all access regardless of
345 user permission.
346 * Improvements to the timeline messages associated with tag changes.
347 (Requires a "[/help/rebuild | fossil rebuild]" to take effect.)
348 * Various additions and fixes for the JSON API.
@@ -352,17 +353,17 @@
352 * Update to use SQLite version 3.7.11.
353 * Various minor bug fixes.
354
355 <h2>Changes For Version 1.21 (2011-12-13)</h2>
356 * Added side-by-side diffs in the command-line interface
357 * Automatically enable hyperlinks if the UserAgent string in the
358 HTTP header suggests that the requestor is a human and not a bot.
359 * Show only commonly used commands with "fossil help". Use
360 "fossil help --all" to see the complete list now.
361 * Improvements to the "stash" command: (1) Stash all files, not just
362 those below the working directory. (2) Add the --detail option to
363 "list". (3) Confirm before "drop --all". (4) Add the "help"
364 subcommand.
365 * Add an Admin/Access setting to change the number of octets of the
366 IP address that are saved in login cookies - allowing this setting
367 to be changed to zero
368 * Promote the "test-md5sum" command to "md5sum".
@@ -381,11 +382,11 @@
381 * Added side-by-side diffs in HTML interface. [0bde74ea1e]
382 * Added support for symlinks. (Controlled by "allow-symlinks" setting,
383 off by default). [e4f1c1fe95]
384 * Fixed CLI annotate to show the proper file version in case there
385 are multiple equal versions in history. [e161670939]
386 * Timeline now shows tag changes (requires rebuild).[87540ed6e6]
387 * Fixed annotate to show "more relevant" versions of lines in
388 some cases. [e161670939]
389 * New command: ticket history. [98a855c508]
390 * Disabled SSLv2 in HTTPS client.[ea1d369d23]
391 * Fixed constant prompting regarding previously-saved SSL
@@ -396,11 +397,11 @@
396 always identical for any given checkin. [e080560378]
397 * A number of minor HTML-related tweaks and fixes.
398 * Added --args FILENAME global CLI argument to import arbitrary
399 CLI arguments from a file (e.g. long file lists). [e080560378]
400 * Fixed significant memory leak in annotation of files with long
401 histories.[9929bab702]
402 * Added warnings when a merge operation overwrites local copies
403 (UNDO is available, but previously this condition normally went
404 silently unnoticed). [39f979b08c]
405 * Improved performance when adding many files. [a369dc7721]
406 * Improve merges which contain many file renames. [0b93b0f958]
407
--- www/changes.wiki
+++ www/changes.wiki
@@ -7,10 +7,11 @@
7 * The [/reports] page now requires Read ("o") permissions. The "byweek"
8 report now properly propagates the selected year through the event type
9 filter links.
10 * The [/help/info | info command] now shows leaf status of the checkout.
11 * Add support for tunneling https through a http proxy (Ticket [e854101c4f]).
12 * Add option --empty to the "[/help?cmd=open | fossil open]" command.
13
14 <h2>Changes For Version 1.28 (2014-01-27)</h2>
15 * Enhance [/help?cmd=/reports | /reports] to support event type filtering.
16 * When cloning a repository, the user name passed via the URL (if any)
17 is now used as the default local admin user's name.
@@ -26,40 +27,40 @@
27 Admin/Configuration.
28 * Fix CGI processing so that it works on web servers that do not
29 supply REQUEST_URI.
30 * Add options --dirsonly, --emptydirs, and --allckouts to the
31 "[/help?cmd=clean | fossil clean]" command.
32 * Ten-fold performance improvement in large "fossil blame" or
33 "fossil annotate" commands.
34 * Add option -W|--width and --offset to "[/help?cmd=timeline | fossil timeline]"
35 and "[/help?cmd=finfo | fossil finfo]" commands.
36 * Option -n|--limit of "[/help?cmd=timeline | fossil timeline]" now
37 specifies the number of entries, just like all other commands which
38 have the -n|--limit option. The various timeline-related functions
39 now output "--- ?? limit (??) reached ---" at the end whenever
40 appropriate. Use "-n 0" if no limit is desired.
41 * Fix handling of password embedded in Fossil URL.
42 * New <tt>--once</tt> option to [/help?cmd=clone | fossil clone] command
43 which does not store the URL or password when cloning.
44 * Modify [/help?cmd=ui | fossil ui] to respect "default user" in an open
45 repository.
46 * Fossil now hides check-ins that have the "hidden" tag in timeline webpages.
47 * Enhance <tt>/ci_edit</tt> page to add the "hidden" tag to check-ins.
48 * Advanced possibilities for commit and ticket change notifications over
49 http using TH1 scripting.
50 * Add --sha1sum and --integrate options
51 to the "[/help?cmd=commit | fossil commit]" command.
52 * Add the "clean" and "extra" subcommands to the
53 "[/help?cmd=all | fossil all]" command
54 * Add the --whatif option to "[/help?cmd=clean|fossil clean]" that works the
55 same as "--dry-run",
56 so that the name does not collide with the --dry-run option of "fossil all".
57 * Provide a configuration option to show dates on the web timeline
58 as "YYMMMDD HH:MM"
59 * Add an option to the "stats" webpage that allows an administrator to see
60 the current repository schema.
61 * Enhancements to the "[/help?cmd=/vdiff|/vdiff]" webpage for more difference
62 display options.
63 * Added the "[/tree?ci=trunk&expand | /tree]" webpage as an alternative
64 to "/dir" and make it the default way of showing file lists.
65 * Send gzipped HTTP responses to clients that support it.
66
@@ -118,11 +119,11 @@
119 See
120 [http://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-casesensitive]
121 * Enhancements to /timeline.rss, adding more flags for filtering
122 results, including the ability to subscribe to changes made
123 to individual tickets. For example: [/timeline.rss?y=t&tkt=12fceeec82].
124 * Improved handling of the differences between case-sensitive and
125 case-insensitive filesystems.
126 * JSON API: added the 'status' command to report local checkout status.
127 * Fixes to the <tt>--args</tt> support and documented this feature in the help.
128 * Added [/stats_report] page.
129 * Added <tt>ym=YYYY-MM</tt> filter to the [/timeline?ym=2013-06].
@@ -136,15 +137,15 @@
137
138 <h2>Changes For Version 1.25 (2013-02-16)</h2>
139 * Enhancements to ticket processing. There are now two tables: TICKET and
140 TICKETCHNG. There is one row in TICKETCHNG for each ticket artifact.
141 Fields from ticket artifacts go into either or both of TICKET and
142 TICKETCHNG, whichever contain matching column names. Default ticket
143 edit and viewing scripts are updated to use TICKETCHNG. The TH1
144 scripting language is enhanced to support this, including the new
145 "query" command for doing SQL queries against the repository database.
146 All changes should be backwards compatible.
147 * Add the ability to moderate ticket and wiki changes. Unmoderated changes
148 do not sync and may be deleted by the moderator if found to contain spam
149 or other objectionable content.
150 * Add javascript so that clicking on a node of the timeline graph selects
151 that node. Then clicking on a second node shows a diff between the
@@ -157,16 +158,16 @@
158 * Add the "fossil cat" command which is basically an alias for
159 "fossil finfo -p".
160 * Hyperlinks with the class "button" are rendered as submenu buttons
161 on embedded documentation.
162 * The check-in comment editor on windows now defaults to NotePad.exe.
163 * Correctly deal with BOMs in check-in comments. Also attempt to convert
164 check-in comments to UTF8 from other encodings.
165 * Allow the deletion of multiple stash entries using multiple arguments
166 to the "fossil stash rm" command.
167 * Enhance the "fossil server DIRECTORY" command to serve static content
168 files contained in DIRECTORY. For security, only files with a
169 recognized suffix (such as *.html, *.jpg, *.txt, etc) will be delivered
170 as static content, and *.fossil files are not on the list of recognized
171 suffixes. There are additional restrictions on the names of the files.
172 * Allow the "fossil ui" command to specify a directory as long as the
173 the --notfound option is used.
@@ -189,11 +190,11 @@
190 * Add options to "fossil commit" to override the various sanity checks.
191 Options added: --allow-empty, --allow-fork, --allow-older, and
192 --allow-conflict.
193 * Optionally require a CAPTCHA (controlled by a setting on the
194 Admin/Access webpage) when a user who is not logged in tries to
195 edit wiki, or a ticket, or an attachment.
196 * Improvements to the "ssh://" sync protocol, to help it move past
197 noisey motd comments.
198 * Add the uf=FILE-SHA1-HASH query parameter to the timeline, causing the
199 timeline to show only check-ins that contain the specific file identified
200 by FILE-SHA1-HASH. ("uf" stands for "uses file".)
@@ -302,16 +303,16 @@
303 * Added the "public-pages" glob pattern that can be configured to allow
304 anonymous users to see embedded documentation on sites where source
305 code should not be accessible to anonymous users.
306 * Allow multiple --tag options on the same "fossil commit" command.
307 * Change the meaning of the --bgcolor option for "fossil commit" to only
308 change the color for that one commit. The new --branchcolor option
309 is available to set a persistent background color.
310 * Add the branch= query parameter to the vdiff page and the --branch option
311 to the "fossil diff" command.
312 * Check-in names of the form "root:BRANCH" now refer to the origin of
313 the branch. Hence to see all changes in a branch, use
314 "fossil diff --from root:BRANCH --to BRANCH". The --branch option on
315 the diff command is an alias for the same.
316 * Add the ability to configure ad-units to be displayed between the menu
317 bar and the content.
318 * Add the ability to set a background image as part of server configuration.
@@ -318,18 +319,18 @@
319 * Allow partial commits of cherrypick merges.
320 * Updates against an uncommitted merge are now a warning, not a fatal error.
321 * Prompt the user to continue if a check-in comment is unedited.
322 * Fixes to case sensitivity settings with the /dir webpage.
323 * Repositories now try to remember the locations of all checkouts and
324 web-access URLs and display this information with the
325 "fossil info $REPO" command.
326 * Improved defense against spiders: The src= attribute of
327 &lt;a&gt; elements is set using javascript after the page loads.
328 * Enhanced formatting of the user list page.
329 * If a file named in "fossil add" is missing, that is now a warning instead
330 of a fatal error.
331 * Fix side-by-side diff so that it displays correctly with
332 multi-byte UTF8 characters.
333 * Performance improvements in the diff logic.
334 * Other performance tweaks and documentation updates.
335
336 <h2>Changes For Version 1.22 (2012-03-17)</h2>
@@ -338,11 +339,11 @@
339 * Promote "allow-symlinks" to a versionable setting
340 * Harden the CGI processing logic against DOS attacks
341 * Add the ability to run TH1 scripts after sync requests
342 * Store the repository name in _FOSSIL_ as it is type in the "open" command,
343 possibly as a relative pathname.
344 * Make ".fslckout" the alternative name for the "_FOSSIL_" file.
345 * Change the "ssh:" transfer method to allow all access regardless of
346 user permission.
347 * Improvements to the timeline messages associated with tag changes.
348 (Requires a "[/help/rebuild | fossil rebuild]" to take effect.)
349 * Various additions and fixes for the JSON API.
@@ -352,17 +353,17 @@
353 * Update to use SQLite version 3.7.11.
354 * Various minor bug fixes.
355
356 <h2>Changes For Version 1.21 (2011-12-13)</h2>
357 * Added side-by-side diffs in the command-line interface
358 * Automatically enable hyperlinks if the UserAgent string in the
359 HTTP header suggests that the requestor is a human and not a bot.
360 * Show only commonly used commands with "fossil help". Use
361 "fossil help --all" to see the complete list now.
362 * Improvements to the "stash" command: (1) Stash all files, not just
363 those below the working directory. (2) Add the --detail option to
364 "list". (3) Confirm before "drop --all". (4) Add the "help"
365 subcommand.
366 * Add an Admin/Access setting to change the number of octets of the
367 IP address that are saved in login cookies - allowing this setting
368 to be changed to zero
369 * Promote the "test-md5sum" command to "md5sum".
@@ -381,11 +382,11 @@
382 * Added side-by-side diffs in HTML interface. [0bde74ea1e]
383 * Added support for symlinks. (Controlled by "allow-symlinks" setting,
384 off by default). [e4f1c1fe95]
385 * Fixed CLI annotate to show the proper file version in case there
386 are multiple equal versions in history. [e161670939]
387 * Timeline now shows tag changes (requires rebuild).[87540ed6e6]
388 * Fixed annotate to show "more relevant" versions of lines in
389 some cases. [e161670939]
390 * New command: ticket history. [98a855c508]
391 * Disabled SSLv2 in HTTPS client.[ea1d369d23]
392 * Fixed constant prompting regarding previously-saved SSL
@@ -396,11 +397,11 @@
397 always identical for any given checkin. [e080560378]
398 * A number of minor HTML-related tweaks and fixes.
399 * Added --args FILENAME global CLI argument to import arbitrary
400 CLI arguments from a file (e.g. long file lists). [e080560378]
401 * Fixed significant memory leak in annotation of files with long
402 histories.[9929bab702]
403 * Added warnings when a merge operation overwrites local copies
404 (UNDO is available, but previously this condition normally went
405 silently unnoticed). [39f979b08c]
406 * Improved performance when adding many files. [a369dc7721]
407 * Improve merges which contain many file renames. [0b93b0f958]
408
--- www/fileformat.wiki
+++ www/fileformat.wiki
@@ -138,31 +138,31 @@
138138
<i>YYYY</i><b>-</b><i>MM</i><b>-</b><i>DD</i><b>T</b><i>HH</i><b>:</b><i>MM</i><b>:</b><i>SS</i><br>
139139
<i>YYYY</i><b>-</b><i>MM</i><b>-</b><i>DD</i><b>T</b><i>HH</i><b>:</b><i>MM</i><b>:</b><i>SS</i><b>.</b><i>SSS</i>
140140
</blockquote>
141141
142142
A manifest has zero or more F-cards. Each F-card identifies a file
143
-that is part of the check-in. There are one, two, three, or four arguments.
144
-The first argument
145
-is the pathname of the file in the check-in relative to the root
146
-of the project file hierarchy. No ".." or "." directories are allowed
147
-within the filename. Space characters are escaped as in C-card
148
-comment text. Backslash characters and newlines are not allowed
149
-within filenames. The directory separator character is a forward
150
-slash (ASCII 0x2F). The second argument to the F-card is the
151
-full 40-character lower-case hexadecimal SHA1 hash of the content
152
-artifact. The second argument is required for baseline manifests
153
-but is optional for delta manifests. When the second argument to the
154
-F-card is omitted, it means that the file has been deleted relative
155
-to the baseline. The optional 3rd argument defines any special access
156
-permissions associated with the file. The only special code currently
157
-defined is "x" which means that the file is executable. All files are
158
-always readable and writable. This can be expressed by "w" permission
159
-if desired but is optional. The file format might be extended with
160
-new permission letters in the future.
161
-The optional 4th argument is the name of the same file as it existed in
162
-the parent check-in. If the name of the file is unchanged from its
163
-parent, then the 4th argument is omitted.
143
+that is part of the check-in. There are one, two, three, or four
144
+arguments. The first argument is the pathname of the file in the
145
+check-in relative to the root of the project file hierarchy. No ".."
146
+or "." directories are allowed within the filename. Space characters
147
+are escaped as in C-card comment text. Backslash characters and
148
+newlines are not allowed within filenames. The directory separator
149
+character is a forward slash (ASCII 0x2F). The second argument to the
150
+F-card is the full 40-character lower-case hexadecimal SHA1 hash of
151
+the content artifact. The second argument is required for baseline
152
+manifests but is optional for delta manifests. When the second
153
+argument to the F-card is omitted, it means that the file has been
154
+deleted relative to the baseline (files removed in baseline manifests
155
+versions are <em>not</em> added as F-cards). The optional 3rd argument
156
+defines any special access permissions associated with the file. This
157
+can be defined as "x" to mean that the file is executable or "l"
158
+(small letter ell) to mean a symlink. All files are always readable
159
+and writable. This can be expressed by "w" permission if desired but
160
+is optional. The file format might be extended with new permission
161
+letters in the future. The optional 4th argument is the name of the
162
+same file as it existed in the parent check-in. If the name of the
163
+file is unchanged from its parent, then the 4th argument is omitted.
164164
165165
A manifest has zero or one N-cards. The N-card specifies the mimetype for the
166166
text in the comment of the C-card. If the N-card is omitted, a default mimetype
167167
is used.
168168
169169
--- www/fileformat.wiki
+++ www/fileformat.wiki
@@ -138,31 +138,31 @@
138 <i>YYYY</i><b>-</b><i>MM</i><b>-</b><i>DD</i><b>T</b><i>HH</i><b>:</b><i>MM</i><b>:</b><i>SS</i><br>
139 <i>YYYY</i><b>-</b><i>MM</i><b>-</b><i>DD</i><b>T</b><i>HH</i><b>:</b><i>MM</i><b>:</b><i>SS</i><b>.</b><i>SSS</i>
140 </blockquote>
141
142 A manifest has zero or more F-cards. Each F-card identifies a file
143 that is part of the check-in. There are one, two, three, or four arguments.
144 The first argument
145 is the pathname of the file in the check-in relative to the root
146 of the project file hierarchy. No ".." or "." directories are allowed
147 within the filename. Space characters are escaped as in C-card
148 comment text. Backslash characters and newlines are not allowed
149 within filenames. The directory separator character is a forward
150 slash (ASCII 0x2F). The second argument to the F-card is the
151 full 40-character lower-case hexadecimal SHA1 hash of the content
152 artifact. The second argument is required for baseline manifests
153 but is optional for delta manifests. When the second argument to the
154 F-card is omitted, it means that the file has been deleted relative
155 to the baseline. The optional 3rd argument defines any special access
156 permissions associated with the file. The only special code currently
157 defined is "x" which means that the file is executable. All files are
158 always readable and writable. This can be expressed by "w" permission
159 if desired but is optional. The file format might be extended with
160 new permission letters in the future.
161 The optional 4th argument is the name of the same file as it existed in
162 the parent check-in. If the name of the file is unchanged from its
163 parent, then the 4th argument is omitted.
164
165 A manifest has zero or one N-cards. The N-card specifies the mimetype for the
166 text in the comment of the C-card. If the N-card is omitted, a default mimetype
167 is used.
168
169
--- www/fileformat.wiki
+++ www/fileformat.wiki
@@ -138,31 +138,31 @@
138 <i>YYYY</i><b>-</b><i>MM</i><b>-</b><i>DD</i><b>T</b><i>HH</i><b>:</b><i>MM</i><b>:</b><i>SS</i><br>
139 <i>YYYY</i><b>-</b><i>MM</i><b>-</b><i>DD</i><b>T</b><i>HH</i><b>:</b><i>MM</i><b>:</b><i>SS</i><b>.</b><i>SSS</i>
140 </blockquote>
141
142 A manifest has zero or more F-cards. Each F-card identifies a file
143 that is part of the check-in. There are one, two, three, or four
144 arguments. The first argument is the pathname of the file in the
145 check-in relative to the root of the project file hierarchy. No ".."
146 or "." directories are allowed within the filename. Space characters
147 are escaped as in C-card comment text. Backslash characters and
148 newlines are not allowed within filenames. The directory separator
149 character is a forward slash (ASCII 0x2F). The second argument to the
150 F-card is the full 40-character lower-case hexadecimal SHA1 hash of
151 the content artifact. The second argument is required for baseline
152 manifests but is optional for delta manifests. When the second
153 argument to the F-card is omitted, it means that the file has been
154 deleted relative to the baseline (files removed in baseline manifests
155 versions are <em>not</em> added as F-cards). The optional 3rd argument
156 defines any special access permissions associated with the file. This
157 can be defined as "x" to mean that the file is executable or "l"
158 (small letter ell) to mean a symlink. All files are always readable
159 and writable. This can be expressed by "w" permission if desired but
160 is optional. The file format might be extended with new permission
161 letters in the future. The optional 4th argument is the name of the
162 same file as it existed in the parent check-in. If the name of the
163 file is unchanged from its parent, then the 4th argument is omitted.
164
165 A manifest has zero or one N-cards. The N-card specifies the mimetype for the
166 text in the comment of the C-card. If the N-card is omitted, a default mimetype
167 is used.
168
169

Keyboard Shortcuts

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