Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Rename the options for whitespace handling in annotate/blame/diff following GNU diff, not following GIT. So whether your diff tool is configured being internal or external, the same options can be used. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
28234db8bc9605008c0326020eceb1ef |
| User & Date: | jan.nijtmans 2014-03-07 15:49:16.640 |
Context
|
2014-03-07
| ||
| 16:48 | Convert utf-16 files back to intended encoding. ... (check-in: dd47a123e1 user: jan.nijtmans tags: trunk) | |
| 15:49 | Rename the options for whitespace handling in annotate/blame/diff following GNU diff, not following GIT. So whether your diff tool is configured being internal or external, the same options can be used. ... (check-in: 28234db8bc user: jan.nijtmans tags: trunk) | |
| 14:58 | In SQLite, import the fix for the journal_mode=PERSIST delete problem on windows. This has no effect on Fossil since Fossil does not use journal_mode=PERSIST. The update is for completeness only. ... (check-in: 33dc7f31c1 user: drh tags: trunk) | |
Changes
Changes to src/diff.c.
| ︙ | ︙ | |||
26 27 28 29 30 31 32 | #if INTERFACE /* ** Flag parameters to the text_diff() routine used to control the formatting ** of the diff output. */ #define DIFF_CONTEXT_MASK ((u64)0x0000ffff) /* Lines of context. Default if 0 */ #define DIFF_WIDTH_MASK ((u64)0x00ff0000) /* side-by-side column width */ | | | | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #if INTERFACE /* ** Flag parameters to the text_diff() routine used to control the formatting ** of the diff output. */ #define DIFF_CONTEXT_MASK ((u64)0x0000ffff) /* Lines of context. Default if 0 */ #define DIFF_WIDTH_MASK ((u64)0x00ff0000) /* side-by-side column width */ #define DIFF_IGNORE_EOLWS ((u64)0x01000000) /* Ignore end-of-line whitespace */ #define DIFF_IGNORE_ALLWS ((u64)0x03000000) /* Ignore all whitespace */ #define DIFF_SIDEBYSIDE ((u64)0x04000000) /* Generate a side-by-side diff */ #define DIFF_VERBOSE ((u64)0x08000000) /* Missing shown as empty files */ #define DIFF_INLINE ((u64)0x00000000) /* Inline (not side-by-side) diff */ #define DIFF_BRIEF ((u64)0x10000000) /* Show filenames only */ #define DIFF_HTML ((u64)0x20000000) /* Render for HTML */ #define DIFF_LINENO ((u64)0x40000000) /* Show line numbers */ #define DIFF_NOOPT (((u64)0x01)<<32) /* Suppress optimizations (debug) */ |
| ︙ | ︙ | |||
167 168 169 170 171 172 173 |
for(j=0; z[j] && z[j]!='\n'; j++){}
k = j;
s = 0;
indent = 0;
if( diffFlags & DIFF_IGNORE_EOLWS ){
while( k>0 && fossil_isspace(z[k-1]) ){ k--; }
}
| | | 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
for(j=0; z[j] && z[j]!='\n'; j++){}
k = j;
s = 0;
indent = 0;
if( diffFlags & DIFF_IGNORE_EOLWS ){
while( k>0 && fossil_isspace(z[k-1]) ){ k--; }
}
if( (diffFlags & DIFF_IGNORE_ALLWS)==DIFF_IGNORE_ALLWS ){
while( s<k && fossil_isspace(z[s]) ){
if( z[s]=='\t' ){
indent = ((indent+9)/8)*8;
}else if( z[s]==' ' ){
indent++;
}
s++;
|
| ︙ | ︙ | |||
1787 1788 1789 1790 1791 1792 1793 |
DContext c;
if( diffFlags & DIFF_INVERT ){
Blob *pTemp = pA_Blob;
pA_Blob = pB_Blob;
pB_Blob = pTemp;
}
| | | 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 |
DContext c;
if( diffFlags & DIFF_INVERT ){
Blob *pTemp = pA_Blob;
pA_Blob = pB_Blob;
pB_Blob = pTemp;
}
ignoreWs = (diffFlags & DIFF_IGNORE_ALLWS)!=0;
blob_to_utf8_no_bom(pA_Blob, 0);
blob_to_utf8_no_bom(pB_Blob, 0);
/* Prepare the input files */
memset(&c, 0, sizeof(c));
c.aFrom = break_into_lines(blob_str(pA_Blob), blob_size(pA_Blob),
&c.nFrom, diffFlags);
|
| ︙ | ︙ | |||
1857 1858 1859 1860 1861 1862 1863 | } } /* ** Process diff-related command-line options and return an appropriate ** "diffFlags" integer. ** | | | | | < < | | < | | | > > | | < | 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 |
}
}
/*
** Process diff-related command-line options and return an appropriate
** "diffFlags" integer.
**
** --brief Show filenames only DIFF_BRIEF
** -c|--context N N lines of context. DIFF_CONTEXT_MASK
** --html Format for HTML DIFF_HTML
** --invert Invert the diff DIFF_INVERT
** -n|--linenum Show line numbers DIFF_LINENO
** --noopt Disable optimization DIFF_NOOPT
** --unified Unified diff. ~DIFF_SIDEBYSIDE
** -w|--ignore-all-space Ignore all whitespaces DIFF_IGNORE_ALLWS
** --width|-W N N character lines. DIFF_WIDTH_MASK
** -y|--side-by-side Side-by-side diff. DIFF_SIDEBYSIDE
** -Z|--ignore-trailing-space Ignore eol-whitespaces DIFF_IGNORE_EOLWS
*/
u64 diff_options(void){
u64 diffFlags = 0;
const char *z;
int f;
if( find_option("side-by-side","y",0)!=0 ) diffFlags |= DIFF_SIDEBYSIDE;
if( find_option("unified",0,0)!=0 ) diffFlags &= ~DIFF_SIDEBYSIDE;
if( (z = find_option("context","c",1))!=0 && (f = atoi(z))>=0 ){
if( f > DIFF_CONTEXT_MASK ) f = DIFF_CONTEXT_MASK;
diffFlags |= f + DIFF_CONTEXT_EX;
}
if( (z = find_option("width","W",1))!=0 && (f = atoi(z))>0 ){
f *= DIFF_CONTEXT_MASK+1;
if( f > DIFF_WIDTH_MASK ) f = DIFF_CONTEXT_MASK;
diffFlags |= f;
}
if( find_option("html",0,0)!=0 ) diffFlags |= DIFF_HTML;
if( find_option("ignore-trailing-space","Z",0)!=0 ) diffFlags |= DIFF_IGNORE_EOLWS;
if( find_option("ignore-all-space","w",0)!=0 ) diffFlags |= DIFF_IGNORE_ALLWS;
if( find_option("linenum","n",0)!=0 ) diffFlags |= DIFF_LINENO;
if( find_option("noopt",0,0)!=0 ) diffFlags |= DIFF_NOOPT;
if( find_option("invert",0,0)!=0 ) diffFlags |= DIFF_INVERT;
if( find_option("brief",0,0)!=0 ) diffFlags |= DIFF_BRIEF;
return diffFlags;
}
|
| ︙ | ︙ | |||
2212 2213 2214 2215 2216 2217 2218 |
mid = name_to_typed_rid(PD("checkin","0"),"ci");
zFilename = P("filename");
fnid = db_int(0, "SELECT fnid FROM filename WHERE name=%Q", zFilename);
if( mid==0 || fnid==0 ){ fossil_redirect_home(); }
iLimit = atoi(PD("limit","20"));
if( P("filevers") ) annFlags |= ANN_FILE_VERS;
ignoreWs = P("w")!=0;
| | | 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 |
mid = name_to_typed_rid(PD("checkin","0"),"ci");
zFilename = P("filename");
fnid = db_int(0, "SELECT fnid FROM filename WHERE name=%Q", zFilename);
if( mid==0 || fnid==0 ){ fossil_redirect_home(); }
iLimit = atoi(PD("limit","20"));
if( P("filevers") ) annFlags |= ANN_FILE_VERS;
ignoreWs = P("w")!=0;
if( ignoreWs ) diffFlags |= DIFF_IGNORE_ALLWS;
if( !db_exists("SELECT 1 FROM mlink WHERE mid=%d AND fnid=%d",mid,fnid) ){
fossil_redirect_home();
}
/* compute the annotation */
compute_direct_ancestors(mid, 10000000);
annotate_file(&ann, fnid, mid, iLimit, annFlags, diffFlags);
|
| ︙ | ︙ | |||
2366 2367 2368 2369 2370 2371 2372 | ** ** Output the text of a file with markings to show when each line of ** the file was last modified. The "annotate" command shows line numbers ** and omits the username. The "blame" and "praise" commands show the user ** who made each checkin and omits the line number. ** ** Options: | | | | | < | | 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 |
**
** Output the text of a file with markings to show when each line of
** the file was last modified. The "annotate" command shows line numbers
** and omits the username. The "blame" and "praise" commands show the user
** who made each checkin and omits the line number.
**
** Options:
** --filevers Show file version numbers rather than check-in versions
** -l|--log List all versions analyzed
** -n|--limit N Only look backwards in time by N versions
** -Z|--ignore-trailing-space Ignore eol-whitespaces
** -w|--ignore-all-space Ignore all whitespaces
**
** See also: info, finfo, timeline
*/
void annotate_cmd(void){
int fnid; /* Filename ID */
int fid; /* File instance ID */
int mid; /* Manifest where file was checked in */
|
| ︙ | ︙ | |||
2397 2398 2399 2400 2401 2402 2403 |
int bBlame = 0; /* True for BLAME output. False for ANNOTATE. */
bBlame = g.argv[1][0]!='a';
zLimit = find_option("limit","n",1);
if( zLimit==0 || zLimit[0]==0 ) zLimit = "-1";
iLimit = atoi(zLimit);
showLog = find_option("log","l",0)!=0;
| | | < | 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 |
int bBlame = 0; /* True for BLAME output. False for ANNOTATE. */
bBlame = g.argv[1][0]!='a';
zLimit = find_option("limit","n",1);
if( zLimit==0 || zLimit[0]==0 ) zLimit = "-1";
iLimit = atoi(zLimit);
showLog = find_option("log","l",0)!=0;
if( find_option("ignore-trailing-space","Z",0)!=0 ) diffFlags |= DIFF_IGNORE_EOLWS;
if( find_option("ignore-all-space","w",0)!=0 ) diffFlags |= DIFF_IGNORE_ALLWS;
fileVers = find_option("filevers",0,0)!=0;
db_must_be_within_tree();
if( g.argc<3 ) {
usage("FILENAME");
}
file_tree_name(g.argv[2], &treename, 1);
zFilename = blob_str(&treename);
|
| ︙ | ︙ |
Changes to src/diffcmd.c.
| ︙ | ︙ | |||
1087 1088 1089 1090 1091 1092 1093 | ** when using an external diff program. ** ** The "--binary" option causes files matching the glob PATTERN to be treated ** as binary when considering if they should be used with external diff program. ** This option overrides the "binary-glob" setting. ** ** Options: | | | | | | | < < | | | | | | | | | > | 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 |
** when using an external diff program.
**
** The "--binary" option causes files matching the glob PATTERN to be treated
** as binary when considering if they should be used with external diff program.
** This option overrides the "binary-glob" setting.
**
** Options:
** --binary PATTERN Treat files that match the glob PATTERN as binary
** --branch BRANCH Show diff of all changes on BRANCH
** --brief Show filenames only
** --context|-c N Use N lines of context
** --diff-binary BOOL Include binary files when using external commands
** --from|-r VERSION select VERSION as source for the diff
** --internal|-i use internal diff logic
** --side-by-side|-y side-by-side diff
** --tk Launch a Tcl/Tk GUI for display
** --to VERSION select VERSION as target for the diff
** --unified unified diff
** -v|--verbose output complete text of added or deleted files
** -w|--ignore-all-space Ignore changes to start-of-line and end-of-line
** whitespace
** -W|--width Width of lines in side-by-side diff
** -Z|--ignore-trailing-space Ignore changes to end-of-line whitespace
*/
void diff_cmd(void){
int isGDiff; /* True for gdiff. False for normal diff */
int isInternDiff; /* True for internal diff */
int verboseFlag; /* True if -v or --verbose flag is used */
const char *zFrom; /* Source version number */
const char *zTo; /* Target version number */
|
| ︙ | ︙ |
Changes to src/info.c.
| ︙ | ︙ | |||
458 459 460 461 462 463 464 |
if( x<0 || x>DIFF_WIDTH_MASK ) x = DIFF_WIDTH_MASK;
diffFlags += x;
}else{
diffFlags = DIFF_INLINE;
}
if( P("w") ){
| | | 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 |
if( x<0 || x>DIFF_WIDTH_MASK ) x = DIFF_WIDTH_MASK;
diffFlags += x;
}else{
diffFlags = DIFF_INLINE;
}
if( P("w") ){
diffFlags |= DIFF_IGNORE_ALLWS;
}
/* "dc" query parameter determines lines of context */
x = atoi(PD("dc","7"));
if( x<0 || x>DIFF_CONTEXT_MASK ) x = DIFF_CONTEXT_MASK;
diffFlags += x;
/* The "noopt" parameter disables diff optimization */
|
| ︙ | ︙ | |||
676 677 678 679 680 681 682 |
verboseFlag = g.zPath[0]!='c';
if( db_get_boolean("show-version-diffs", 0)==0 ){
verboseFlag = !verboseFlag;
zPage = "ci";
zPageHide = "vinfo";
}
diffFlags = construct_diff_flags(verboseFlag, sideBySide);
| | | 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 |
verboseFlag = g.zPath[0]!='c';
if( db_get_boolean("show-version-diffs", 0)==0 ){
verboseFlag = !verboseFlag;
zPage = "ci";
zPageHide = "vinfo";
}
diffFlags = construct_diff_flags(verboseFlag, sideBySide);
zW = (diffFlags&DIFF_IGNORE_ALLWS)?"&w":"";
if( verboseFlag ){
@ %z(xhref("class='button'","%R/%s/%T",zPageHide,zName))
@ Hide Diffs</a>
if( sideBySide ){
@ %z(xhref("class='button'","%R/%s/%T?sbs=0%s",zPage,zName,zW))
@ Unified Diffs</a>
}else{
|
| ︙ | ︙ | |||
986 987 988 989 990 991 992 |
zGlob = P("glob");
zFrom = P("from");
zTo = P("to");
if(zGlob && !*zGlob){
zGlob = NULL;
}
diffFlags = construct_diff_flags(verboseFlag, sideBySide);
| | | 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 |
zGlob = P("glob");
zFrom = P("from");
zTo = P("to");
if(zGlob && !*zGlob){
zGlob = NULL;
}
diffFlags = construct_diff_flags(verboseFlag, sideBySide);
zW = (diffFlags&DIFF_IGNORE_ALLWS)?"&w":"";
if( sideBySide || verboseFlag ){
style_submenu_element("Hide Diff", "hidediff",
"%R/vdiff?from=%T&to=%T&sbs=0%s%T%s",
zFrom, zTo,
zGlob ? "&glob=" : "", zGlob ? zGlob : "", zW);
}
if( !sideBySide ){
|
| ︙ | ︙ | |||
1380 1381 1382 1383 1384 1385 1386 |
sideBySide = !is_false(PD("sbs","1"));
zV1 = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", v1);
zV2 = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", v2);
diffFlags = construct_diff_flags(1, sideBySide) | DIFF_HTML;
style_header("Diff");
| | < | 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 |
sideBySide = !is_false(PD("sbs","1"));
zV1 = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", v1);
zV2 = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", v2);
diffFlags = construct_diff_flags(1, sideBySide) | DIFF_HTML;
style_header("Diff");
zW = (diffFlags&DIFF_IGNORE_ALLWS)?"&w":"";
if( *zW ){
style_submenu_element("Show Whitespace Changes", "Show Whitespace Changes",
"%s/fdiff?v1=%T&v2=%T&sbs=%d",
g.zTop, P("v1"), P("v2"), sideBySide);
}else{
style_submenu_element("Ignore Whitespace", "Ignore Whitespace",
"%s/fdiff?v1=%T&v2=%T&sbs=%d&w",
g.zTop, P("v1"), P("v2"), sideBySide);
|
| ︙ | ︙ |
Changes to www/changes.wiki.
| ︙ | ︙ | |||
9 10 11 12 13 14 15 |
* The [/reports] page now requires Read ("o") permissions. The "byweek"
report now properly propagates the selected year through the event type
filter links.
* The [/help/info | info command] now shows leaf status of the checkout.
* Add support for tunneling https through a http proxy (Ticket [e854101c4f]).
* Add option --empty to the "[/help?cmd=open | fossil open]" command.
* Enhanced [/help?cmd=/fileage|the fileage page] to support a glob parameter.
| | < | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
* The [/reports] page now requires Read ("o") permissions. The "byweek"
report now properly propagates the selected year through the event type
filter links.
* The [/help/info | info command] now shows leaf status of the checkout.
* Add support for tunneling https through a http proxy (Ticket [e854101c4f]).
* Add option --empty to the "[/help?cmd=open | fossil open]" command.
* Enhanced [/help?cmd=/fileage|the fileage page] to support a glob parameter.
* Add -w|--ignore-all-space and -Z|--ignore-trailing-space options to
[/help?cmd=annotate|fossil annotate], [/help?cmd=blame|fossil blame],
[/help?cmd=diff|fossil (g)diff], [/help?cmd=stash|fossil stash diff].
* Add button "Ignore Whitespace" to /annotate, /blame, /ci, /fdiff
and /vdiff UI pages.
<h2>Changes For Version 1.28 (2014-01-27)</h2>
* Enhance [/help?cmd=/reports | /reports] to support event type filtering.
* When cloning a repository, the user name passed via the URL (if any)
is now used as the default local admin user's name.
|
| ︙ | ︙ |