Fossil SCM

Implement -b|--ignore-space-change. Doesn't work right yet (needs better hash function)!

jan.nijtmans 2014-03-07 14:38 strip-trailing-cr
Commit c0d1ed927ec219414804aa6c8fd8d8ea24525f2c
+39 -15
--- src/diff.c
+++ src/diff.c
@@ -29,10 +29,11 @@
2929
** of the diff output.
3030
*/
3131
#define DIFF_CONTEXT_MASK ((u64)0x0000ffff) /* Lines of context. Default if 0 */
3232
#define DIFF_WIDTH_MASK ((u64)0x00ff0000) /* side-by-side column width */
3333
#define DIFF_IGNORE_EOLWS ((u64)0x01000000) /* Ignore end-of-line whitespace */
34
+#define DIFF_IGNORE_WSCHG ((u64)0x02000000) /* Ignore whitespace changes */
3435
#define DIFF_IGNORE_ALLWS ((u64)0x03000000) /* Ignore all whitespace */
3536
#define DIFF_SIDEBYSIDE ((u64)0x04000000) /* Generate a side-by-side diff */
3637
#define DIFF_VERBOSE ((u64)0x08000000) /* Missing shown as empty files */
3738
#define DIFF_INLINE ((u64)0x00000000) /* Inline (not side-by-side) diff */
3839
#define DIFF_BRIEF ((u64)0x10000000) /* Show filenames only */
@@ -175,17 +176,31 @@
175176
if( k>0 && z[k-1]=='\r' ){ k--; }
176177
}
177178
if( diffFlags & DIFF_IGNORE_ALLWS ){
178179
while( k>0 && fossil_isspace(z[k-1]) ){ k--; extent++;}
179180
}
180
- if( (diffFlags & DIFF_IGNORE_ALLWS)==DIFF_IGNORE_ALLWS ){
181
- while( s<k && fossil_isspace(z[s]) ){s++; extent++;}
182
- for(h=0, x=s; x<k; x++){
183
- if( fossil_isspace(z[x]) ){
184
- ++numws;
185
- }else{
186
- h = h ^ (h<<2) ^ z[x];
181
+ if( diffFlags & DIFF_IGNORE_WSCHG ){
182
+ if( (diffFlags & DIFF_IGNORE_ALLWS)==DIFF_IGNORE_ALLWS ){
183
+ while( s<k && fossil_isspace(z[s]) ){s++; extent++;}
184
+ for(h=0, x=s; x<k; x++){
185
+ if( fossil_isspace(z[x]) ){
186
+ ++numws;
187
+ }else{
188
+ h = h ^ (h<<2) ^ z[x];
189
+ }
190
+ }
191
+ }else{
192
+ for(h=0, x=0; x<k; x++){
193
+ if( fossil_isspace(z[x]) ){
194
+ if( x>0 && !fossil_isspace(z[x-1]) ){
195
+ ++numws;
196
+ }else{
197
+ h = h ^ (h<<2) ^ ' ';
198
+ }
199
+ }else{
200
+ h = h ^ (h<<2) ^ z[x];
201
+ }
187202
}
188203
}
189204
}else{
190205
for(h=0, x=0; x<k; x++){
191206
h = h ^ (h<<2) ^ z[x];
@@ -207,11 +222,12 @@
207222
208223
/*
209224
** Return true if two DLine elements are identical.
210225
*/
211226
static int same_dline(DLine *pA, DLine *pB){
212
- return pA->h==pB->h && memcmp(pA->z,pB->z,pA->h & LENGTH_MASK)==0;
227
+ return pA->h==pB->h; // TODO: not quite right, need better hash function.
228
+ //return pA->h==pB->h && memcmp(pA->z,pB->z,pA->h & LENGTH_MASK)==0;
213229
}
214230
215231
/*
216232
** Return true if the regular expression *pRe matches any of the
217233
** N dlines
@@ -1857,32 +1873,36 @@
18571873
18581874
/*
18591875
** Process diff-related command-line options and return an appropriate
18601876
** "diffFlags" integer.
18611877
**
1878
+** -b|--ignore-space-change Ignore space changes DIFF_IGNORE_WSCHG
18621879
** --brief Show filenames only DIFF_BRIEF
1863
-** --context|-c N N lines of context. DIFF_CONTEXT_MASK
1880
+** -c|--context N N lines of context. DIFF_CONTEXT_MASK
18641881
** --html Format for HTML DIFF_HTML
18651882
** --invert Invert the diff DIFF_INVERT
1866
-** --linenum|-n Show line numbers DIFF_LINENO
1883
+** -n|--linenum Show line numbers DIFF_LINENO
18671884
** --noopt Disable optimization DIFF_NOOPT
1868
-** --side-by-side|-y Side-by-side diff. DIFF_SIDEBYSIDE
18691885
** --strip-trailing-cr Strip trailing CR DIFF_STRIP_EOLCR
18701886
** --unified Unified diff. ~DIFF_SIDEBYSIDE
1871
-** --width|-W N N character lines. DIFF_WIDTH_MASK
1887
+** -W|--width N N character lines. DIFF_WIDTH_MASK
18721888
** -w|--ignore-all-space Ignore all white space DIFF_IGNORE_ALLWS
1889
+** -y|--side-by-side Side-by-side diff. DIFF_SIDEBYSIDE
18731890
** -Z|--ignore-trailing-space Ignore eol-whitespaces DIFF_IGNORE_EOLWS
18741891
*/
18751892
u64 diff_options(void){
18761893
u64 diffFlags = 0;
18771894
const char *z;
18781895
int f;
18791896
if( find_option("ignore-trailing-space","Z",0)!=0 ){
18801897
diffFlags = DIFF_IGNORE_EOLWS;
18811898
}
1899
+ if( find_option("ignore-space-change","b",0)!=0 ){
1900
+ diffFlags = DIFF_IGNORE_WSCHG; /* stronger than DIFF_IGNORE_EOLWS */
1901
+ }
18821902
if( find_option("ignore-all-space","w",0)!=0 ){
1883
- diffFlags = DIFF_IGNORE_ALLWS; /* stronger than DIFF_IGNORE_EOLWS */
1903
+ diffFlags = DIFF_IGNORE_ALLWS; /* stronger than DIFF_IGNORE_WSCHG */
18841904
}
18851905
if( find_option("strip-trailing-cr",0,0)!=0 ){
18861906
diffFlags |= DIFF_STRIP_EOLCR;
18871907
}
18881908
if( find_option("side-by-side","y",0)!=0 ) diffFlags |= DIFF_SIDEBYSIDE;
@@ -2366,10 +2386,11 @@
23662386
** the file was last modified. The "annotate" command shows line numbers
23672387
** and omits the username. The "blame" and "praise" commands show the user
23682388
** who made each checkin and omits the line number.
23692389
**
23702390
** Options:
2391
+** -b|--ignore-space-change Ignore white space changes when comparing lines
23712392
** --filevers Show file version numbers rather than check-in versions
23722393
** -l|--log List all versions analyzed
23732394
** -n|--limit N Only look backwards in time by N versions
23742395
** -w|--ignore-all-space Ignore white space when comparing lines
23752396
** -Z|--ignore-trailing-space Ignore whitespace at line end
@@ -2396,14 +2417,17 @@
23962417
zLimit = find_option("limit","n",1);
23972418
if( zLimit==0 || zLimit[0]==0 ) zLimit = "-1";
23982419
iLimit = atoi(zLimit);
23992420
showLog = find_option("log","l",0)!=0;
24002421
if( find_option("ignore-trailing-space","Z",0)!=0 ){
2401
- flags |= DIFF_IGNORE_EOLWS;
2422
+ flags = DIFF_IGNORE_EOLWS;
2423
+ }
2424
+ if( find_option("ignore-space-change","b",0)!=0 ){
2425
+ flags = DIFF_IGNORE_WSCHG; /* stronger than DIFF_IGNORE_EOLWS */
24022426
}
24032427
if( find_option("ignore-all-space","w",0)!=0 ){
2404
- flags |= DIFF_IGNORE_ALLWS;
2428
+ flags = DIFF_IGNORE_ALLWS; /* stronger than DIFF_IGNORE_WSCHG */
24052429
}
24062430
fileVers = find_option("filevers",0,0)!=0;
24072431
db_must_be_within_tree();
24082432
if( g.argc<3 ) {
24092433
usage("FILENAME");
24102434
--- src/diff.c
+++ src/diff.c
@@ -29,10 +29,11 @@
29 ** of the diff output.
30 */
31 #define DIFF_CONTEXT_MASK ((u64)0x0000ffff) /* Lines of context. Default if 0 */
32 #define DIFF_WIDTH_MASK ((u64)0x00ff0000) /* side-by-side column width */
33 #define DIFF_IGNORE_EOLWS ((u64)0x01000000) /* Ignore end-of-line whitespace */
 
34 #define DIFF_IGNORE_ALLWS ((u64)0x03000000) /* Ignore all whitespace */
35 #define DIFF_SIDEBYSIDE ((u64)0x04000000) /* Generate a side-by-side diff */
36 #define DIFF_VERBOSE ((u64)0x08000000) /* Missing shown as empty files */
37 #define DIFF_INLINE ((u64)0x00000000) /* Inline (not side-by-side) diff */
38 #define DIFF_BRIEF ((u64)0x10000000) /* Show filenames only */
@@ -175,17 +176,31 @@
175 if( k>0 && z[k-1]=='\r' ){ k--; }
176 }
177 if( diffFlags & DIFF_IGNORE_ALLWS ){
178 while( k>0 && fossil_isspace(z[k-1]) ){ k--; extent++;}
179 }
180 if( (diffFlags & DIFF_IGNORE_ALLWS)==DIFF_IGNORE_ALLWS ){
181 while( s<k && fossil_isspace(z[s]) ){s++; extent++;}
182 for(h=0, x=s; x<k; x++){
183 if( fossil_isspace(z[x]) ){
184 ++numws;
185 }else{
186 h = h ^ (h<<2) ^ z[x];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187 }
188 }
189 }else{
190 for(h=0, x=0; x<k; x++){
191 h = h ^ (h<<2) ^ z[x];
@@ -207,11 +222,12 @@
207
208 /*
209 ** Return true if two DLine elements are identical.
210 */
211 static int same_dline(DLine *pA, DLine *pB){
212 return pA->h==pB->h && memcmp(pA->z,pB->z,pA->h & LENGTH_MASK)==0;
 
213 }
214
215 /*
216 ** Return true if the regular expression *pRe matches any of the
217 ** N dlines
@@ -1857,32 +1873,36 @@
1857
1858 /*
1859 ** Process diff-related command-line options and return an appropriate
1860 ** "diffFlags" integer.
1861 **
 
1862 ** --brief Show filenames only DIFF_BRIEF
1863 ** --context|-c N N lines of context. DIFF_CONTEXT_MASK
1864 ** --html Format for HTML DIFF_HTML
1865 ** --invert Invert the diff DIFF_INVERT
1866 ** --linenum|-n Show line numbers DIFF_LINENO
1867 ** --noopt Disable optimization DIFF_NOOPT
1868 ** --side-by-side|-y Side-by-side diff. DIFF_SIDEBYSIDE
1869 ** --strip-trailing-cr Strip trailing CR DIFF_STRIP_EOLCR
1870 ** --unified Unified diff. ~DIFF_SIDEBYSIDE
1871 ** --width|-W N N character lines. DIFF_WIDTH_MASK
1872 ** -w|--ignore-all-space Ignore all white space DIFF_IGNORE_ALLWS
 
1873 ** -Z|--ignore-trailing-space Ignore eol-whitespaces DIFF_IGNORE_EOLWS
1874 */
1875 u64 diff_options(void){
1876 u64 diffFlags = 0;
1877 const char *z;
1878 int f;
1879 if( find_option("ignore-trailing-space","Z",0)!=0 ){
1880 diffFlags = DIFF_IGNORE_EOLWS;
1881 }
 
 
 
1882 if( find_option("ignore-all-space","w",0)!=0 ){
1883 diffFlags = DIFF_IGNORE_ALLWS; /* stronger than DIFF_IGNORE_EOLWS */
1884 }
1885 if( find_option("strip-trailing-cr",0,0)!=0 ){
1886 diffFlags |= DIFF_STRIP_EOLCR;
1887 }
1888 if( find_option("side-by-side","y",0)!=0 ) diffFlags |= DIFF_SIDEBYSIDE;
@@ -2366,10 +2386,11 @@
2366 ** the file was last modified. The "annotate" command shows line numbers
2367 ** and omits the username. The "blame" and "praise" commands show the user
2368 ** who made each checkin and omits the line number.
2369 **
2370 ** Options:
 
2371 ** --filevers Show file version numbers rather than check-in versions
2372 ** -l|--log List all versions analyzed
2373 ** -n|--limit N Only look backwards in time by N versions
2374 ** -w|--ignore-all-space Ignore white space when comparing lines
2375 ** -Z|--ignore-trailing-space Ignore whitespace at line end
@@ -2396,14 +2417,17 @@
2396 zLimit = find_option("limit","n",1);
2397 if( zLimit==0 || zLimit[0]==0 ) zLimit = "-1";
2398 iLimit = atoi(zLimit);
2399 showLog = find_option("log","l",0)!=0;
2400 if( find_option("ignore-trailing-space","Z",0)!=0 ){
2401 flags |= DIFF_IGNORE_EOLWS;
 
 
 
2402 }
2403 if( find_option("ignore-all-space","w",0)!=0 ){
2404 flags |= DIFF_IGNORE_ALLWS;
2405 }
2406 fileVers = find_option("filevers",0,0)!=0;
2407 db_must_be_within_tree();
2408 if( g.argc<3 ) {
2409 usage("FILENAME");
2410
--- src/diff.c
+++ src/diff.c
@@ -29,10 +29,11 @@
29 ** of the diff output.
30 */
31 #define DIFF_CONTEXT_MASK ((u64)0x0000ffff) /* Lines of context. Default if 0 */
32 #define DIFF_WIDTH_MASK ((u64)0x00ff0000) /* side-by-side column width */
33 #define DIFF_IGNORE_EOLWS ((u64)0x01000000) /* Ignore end-of-line whitespace */
34 #define DIFF_IGNORE_WSCHG ((u64)0x02000000) /* Ignore whitespace changes */
35 #define DIFF_IGNORE_ALLWS ((u64)0x03000000) /* Ignore all whitespace */
36 #define DIFF_SIDEBYSIDE ((u64)0x04000000) /* Generate a side-by-side diff */
37 #define DIFF_VERBOSE ((u64)0x08000000) /* Missing shown as empty files */
38 #define DIFF_INLINE ((u64)0x00000000) /* Inline (not side-by-side) diff */
39 #define DIFF_BRIEF ((u64)0x10000000) /* Show filenames only */
@@ -175,17 +176,31 @@
176 if( k>0 && z[k-1]=='\r' ){ k--; }
177 }
178 if( diffFlags & DIFF_IGNORE_ALLWS ){
179 while( k>0 && fossil_isspace(z[k-1]) ){ k--; extent++;}
180 }
181 if( diffFlags & DIFF_IGNORE_WSCHG ){
182 if( (diffFlags & DIFF_IGNORE_ALLWS)==DIFF_IGNORE_ALLWS ){
183 while( s<k && fossil_isspace(z[s]) ){s++; extent++;}
184 for(h=0, x=s; x<k; x++){
185 if( fossil_isspace(z[x]) ){
186 ++numws;
187 }else{
188 h = h ^ (h<<2) ^ z[x];
189 }
190 }
191 }else{
192 for(h=0, x=0; x<k; x++){
193 if( fossil_isspace(z[x]) ){
194 if( x>0 && !fossil_isspace(z[x-1]) ){
195 ++numws;
196 }else{
197 h = h ^ (h<<2) ^ ' ';
198 }
199 }else{
200 h = h ^ (h<<2) ^ z[x];
201 }
202 }
203 }
204 }else{
205 for(h=0, x=0; x<k; x++){
206 h = h ^ (h<<2) ^ z[x];
@@ -207,11 +222,12 @@
222
223 /*
224 ** Return true if two DLine elements are identical.
225 */
226 static int same_dline(DLine *pA, DLine *pB){
227 return pA->h==pB->h; // TODO: not quite right, need better hash function.
228 //return pA->h==pB->h && memcmp(pA->z,pB->z,pA->h & LENGTH_MASK)==0;
229 }
230
231 /*
232 ** Return true if the regular expression *pRe matches any of the
233 ** N dlines
@@ -1857,32 +1873,36 @@
1873
1874 /*
1875 ** Process diff-related command-line options and return an appropriate
1876 ** "diffFlags" integer.
1877 **
1878 ** -b|--ignore-space-change Ignore space changes DIFF_IGNORE_WSCHG
1879 ** --brief Show filenames only DIFF_BRIEF
1880 ** -c|--context N N lines of context. DIFF_CONTEXT_MASK
1881 ** --html Format for HTML DIFF_HTML
1882 ** --invert Invert the diff DIFF_INVERT
1883 ** -n|--linenum Show line numbers DIFF_LINENO
1884 ** --noopt Disable optimization DIFF_NOOPT
 
1885 ** --strip-trailing-cr Strip trailing CR DIFF_STRIP_EOLCR
1886 ** --unified Unified diff. ~DIFF_SIDEBYSIDE
1887 ** -W|--width N N character lines. DIFF_WIDTH_MASK
1888 ** -w|--ignore-all-space Ignore all white space DIFF_IGNORE_ALLWS
1889 ** -y|--side-by-side Side-by-side diff. DIFF_SIDEBYSIDE
1890 ** -Z|--ignore-trailing-space Ignore eol-whitespaces DIFF_IGNORE_EOLWS
1891 */
1892 u64 diff_options(void){
1893 u64 diffFlags = 0;
1894 const char *z;
1895 int f;
1896 if( find_option("ignore-trailing-space","Z",0)!=0 ){
1897 diffFlags = DIFF_IGNORE_EOLWS;
1898 }
1899 if( find_option("ignore-space-change","b",0)!=0 ){
1900 diffFlags = DIFF_IGNORE_WSCHG; /* stronger than DIFF_IGNORE_EOLWS */
1901 }
1902 if( find_option("ignore-all-space","w",0)!=0 ){
1903 diffFlags = DIFF_IGNORE_ALLWS; /* stronger than DIFF_IGNORE_WSCHG */
1904 }
1905 if( find_option("strip-trailing-cr",0,0)!=0 ){
1906 diffFlags |= DIFF_STRIP_EOLCR;
1907 }
1908 if( find_option("side-by-side","y",0)!=0 ) diffFlags |= DIFF_SIDEBYSIDE;
@@ -2366,10 +2386,11 @@
2386 ** the file was last modified. The "annotate" command shows line numbers
2387 ** and omits the username. The "blame" and "praise" commands show the user
2388 ** who made each checkin and omits the line number.
2389 **
2390 ** Options:
2391 ** -b|--ignore-space-change Ignore white space changes when comparing lines
2392 ** --filevers Show file version numbers rather than check-in versions
2393 ** -l|--log List all versions analyzed
2394 ** -n|--limit N Only look backwards in time by N versions
2395 ** -w|--ignore-all-space Ignore white space when comparing lines
2396 ** -Z|--ignore-trailing-space Ignore whitespace at line end
@@ -2396,14 +2417,17 @@
2417 zLimit = find_option("limit","n",1);
2418 if( zLimit==0 || zLimit[0]==0 ) zLimit = "-1";
2419 iLimit = atoi(zLimit);
2420 showLog = find_option("log","l",0)!=0;
2421 if( find_option("ignore-trailing-space","Z",0)!=0 ){
2422 flags = DIFF_IGNORE_EOLWS;
2423 }
2424 if( find_option("ignore-space-change","b",0)!=0 ){
2425 flags = DIFF_IGNORE_WSCHG; /* stronger than DIFF_IGNORE_EOLWS */
2426 }
2427 if( find_option("ignore-all-space","w",0)!=0 ){
2428 flags = DIFF_IGNORE_ALLWS; /* stronger than DIFF_IGNORE_WSCHG */
2429 }
2430 fileVers = find_option("filevers",0,0)!=0;
2431 db_must_be_within_tree();
2432 if( g.argc<3 ) {
2433 usage("FILENAME");
2434
--- src/diffcmd.c
+++ src/diffcmd.c
@@ -1089,10 +1089,11 @@
10891089
** The "--binary" option causes files matching the glob PATTERN to be treated
10901090
** as binary when considering if they should be used with external diff program.
10911091
** This option overrides the "binary-glob" setting.
10921092
**
10931093
** Options:
1094
+** -b|--ignore-space-change Ignore white space changes when comparing lines
10941095
** --binary PATTERN Treat files that match the glob PATTERN as binary
10951096
** --branch BRANCH Show diff of all changes on BRANCH
10961097
** --brief Show filenames only
10971098
** --context|-c N Use N lines of context
10981099
** --diff-binary BOOL Include binary files when using external commands
10991100
--- src/diffcmd.c
+++ src/diffcmd.c
@@ -1089,10 +1089,11 @@
1089 ** The "--binary" option causes files matching the glob PATTERN to be treated
1090 ** as binary when considering if they should be used with external diff program.
1091 ** This option overrides the "binary-glob" setting.
1092 **
1093 ** Options:
 
1094 ** --binary PATTERN Treat files that match the glob PATTERN as binary
1095 ** --branch BRANCH Show diff of all changes on BRANCH
1096 ** --brief Show filenames only
1097 ** --context|-c N Use N lines of context
1098 ** --diff-binary BOOL Include binary files when using external commands
1099
--- src/diffcmd.c
+++ src/diffcmd.c
@@ -1089,10 +1089,11 @@
1089 ** The "--binary" option causes files matching the glob PATTERN to be treated
1090 ** as binary when considering if they should be used with external diff program.
1091 ** This option overrides the "binary-glob" setting.
1092 **
1093 ** Options:
1094 ** -b|--ignore-space-change Ignore white space changes when comparing lines
1095 ** --binary PATTERN Treat files that match the glob PATTERN as binary
1096 ** --branch BRANCH Show diff of all changes on BRANCH
1097 ** --brief Show filenames only
1098 ** --context|-c N Use N lines of context
1099 ** --diff-binary BOOL Include binary files when using external commands
1100
--- www/changes.wiki
+++ www/changes.wiki
@@ -11,14 +11,15 @@
1111
filter links.
1212
* The [/help/info | info command] now shows leaf status of the checkout.
1313
* Add support for tunneling https through a http proxy (Ticket [e854101c4f]).
1414
* Add option --empty to the "[/help?cmd=open | fossil open]" command.
1515
* Enhanced [/help?cmd=/fileage|the fileage page] to support a glob parameter.
16
- * Add -w|--ignore-all-space and -Z|--ignore-trailing-space options to
17
- [/help?cmd=annotate|fossil annotate], [/help?cmd=blame|fossil blame],
18
- [/help?cmd=diff|fossil (g)diff], [/help?cmd=stash|fossil stash diff].
19
- * Add --strip-trailing-cr options to [/help?cmd=diff|fossil (g)diff] and
16
+ * Add -w|--ignore-all-space, -b|--ignore-space-change and
17
+ -Z|--ignore-trailing-space options to [/help?cmd=annotate|fossil annotate],
18
+ [/help?cmd=blame|fossil blame], [/help?cmd=diff|fossil (g)diff],
19
+ [/help?cmd=stash|fossil stash diff].
20
+ * Add --strip-trailing-cr option to [/help?cmd=diff|fossil (g)diff] and
2021
[/help?cmd=stash|fossil stash diff].
2122
* Add button "Ignore Whitespace" to /annotate, /blame, /ci, /fdiff
2223
and /vdiff UI pages.
2324
2425
<h2>Changes For Version 1.28 (2014-01-27)</h2>
2526
--- www/changes.wiki
+++ www/changes.wiki
@@ -11,14 +11,15 @@
11 filter links.
12 * The [/help/info | info command] now shows leaf status of the checkout.
13 * Add support for tunneling https through a http proxy (Ticket [e854101c4f]).
14 * Add option --empty to the "[/help?cmd=open | fossil open]" command.
15 * Enhanced [/help?cmd=/fileage|the fileage page] to support a glob parameter.
16 * Add -w|--ignore-all-space and -Z|--ignore-trailing-space options to
17 [/help?cmd=annotate|fossil annotate], [/help?cmd=blame|fossil blame],
18 [/help?cmd=diff|fossil (g)diff], [/help?cmd=stash|fossil stash diff].
19 * Add --strip-trailing-cr options to [/help?cmd=diff|fossil (g)diff] and
 
20 [/help?cmd=stash|fossil stash diff].
21 * Add button "Ignore Whitespace" to /annotate, /blame, /ci, /fdiff
22 and /vdiff UI pages.
23
24 <h2>Changes For Version 1.28 (2014-01-27)</h2>
25
--- www/changes.wiki
+++ www/changes.wiki
@@ -11,14 +11,15 @@
11 filter links.
12 * The [/help/info | info command] now shows leaf status of the checkout.
13 * Add support for tunneling https through a http proxy (Ticket [e854101c4f]).
14 * Add option --empty to the "[/help?cmd=open | fossil open]" command.
15 * Enhanced [/help?cmd=/fileage|the fileage page] to support a glob parameter.
16 * Add -w|--ignore-all-space, -b|--ignore-space-change and
17 -Z|--ignore-trailing-space options to [/help?cmd=annotate|fossil annotate],
18 [/help?cmd=blame|fossil blame], [/help?cmd=diff|fossil (g)diff],
19 [/help?cmd=stash|fossil stash diff].
20 * Add --strip-trailing-cr option to [/help?cmd=diff|fossil (g)diff] and
21 [/help?cmd=stash|fossil stash diff].
22 * Add button "Ignore Whitespace" to /annotate, /blame, /ci, /fdiff
23 and /vdiff UI pages.
24
25 <h2>Changes For Version 1.28 (2014-01-27)</h2>
26

Keyboard Shortcuts

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