Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Add chunk number fragment marks to HTML diff output. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
b1530c29ab659a56f488e4386f242eb7 |
| User & Date: | drh 2012-02-07 04:15:41.901 |
Context
|
2012-02-07
| ||
| 15:38 | Add the --brief option to the "diff" command. ... (check-in: e0565d4351 user: drh tags: trunk) | |
| 04:15 | Add chunk number fragment marks to HTML diff output. ... (check-in: b1530c29ab user: drh tags: trunk) | |
| 03:57 | Convert the similarity measure for side-by-side diff alignment to use LCS instead of edit distance. LCS is faster and gives comparable results. ... (check-in: 469462b69a user: drh tags: trunk) | |
Changes
Changes to src/diff.c.
| ︙ | ︙ | |||
235 236 237 238 239 240 241 242 243 244 245 246 247 248 |
int r; /* Index into R[] */
int nr; /* Number of COPY/DELETE/INSERT triples to process */
int mxr; /* Maximum value for r */
int na, nb; /* Number of lines shown from A and B */
int i, j; /* Loop counters */
int m; /* Number of lines to output */
int skip; /* Number of lines to skip */
A = p->aFrom;
B = p->aTo;
R = p->aEdit;
mxr = p->nEdit;
while( mxr>2 && R[mxr-1]==0 && R[mxr-2]==0 ){ mxr -= 3; }
for(r=0; r<mxr; r += 3*nr){
| > | 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 |
int r; /* Index into R[] */
int nr; /* Number of COPY/DELETE/INSERT triples to process */
int mxr; /* Maximum value for r */
int na, nb; /* Number of lines shown from A and B */
int i, j; /* Loop counters */
int m; /* Number of lines to output */
int skip; /* Number of lines to skip */
int nChunk = 0; /* Number of diff chunks seen so far */
A = p->aFrom;
B = p->aTo;
R = p->aEdit;
mxr = p->nEdit;
while( mxr>2 && R[mxr-1]==0 && R[mxr-2]==0 ){ mxr -= 3; }
for(r=0; r<mxr; r += 3*nr){
|
| ︙ | ︙ | |||
276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 |
nb += R[r+i*3];
}
/* Show the header for this block, or if we are doing a modified
** context diff that contains line numbers, show the separate from
** the previous block.
*/
if( showLn ){
if( r==0 ){
/* Do not show a top divider */
}else if( html ){
blob_appendf(pOut, "<span class=\"diffhr\">%.80c</span>\n", '.');
}else{
blob_appendf(pOut, "%.80c\n", '.');
}
}else{
if( html ) blob_appendf(pOut, "<span class=\"diffln\">");
/*
* If the patch changes an empty file or results in an empty file,
| > > | 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 |
nb += R[r+i*3];
}
/* Show the header for this block, or if we are doing a modified
** context diff that contains line numbers, show the separate from
** the previous block.
*/
nChunk++;
if( showLn ){
if( r==0 ){
/* Do not show a top divider */
}else if( html ){
blob_appendf(pOut, "<span class=\"diffhr\">%.80c</span>\n", '.');
blob_appendf(pOut, "<a name=\"chunk%d\"></a>\n", nChunk);
}else{
blob_appendf(pOut, "%.80c\n", '.');
}
}else{
if( html ) blob_appendf(pOut, "<span class=\"diffln\">");
/*
* If the patch changes an empty file or results in an empty file,
|
| ︙ | ︙ | |||
469 470 471 472 473 474 475 |
DLine *pRight, /* Right line of the change */
int lnRight /* Line number of the right line */
){
int nLeft; /* Length of left line in bytes */
int nRight; /* Length of right line in bytes */
int nPrefix; /* Length of common prefix */
int nSuffix; /* Length of common suffix */
| < | 472 473 474 475 476 477 478 479 480 481 482 483 484 485 |
DLine *pRight, /* Right line of the change */
int lnRight /* Line number of the right line */
){
int nLeft; /* Length of left line in bytes */
int nRight; /* Length of right line in bytes */
int nPrefix; /* Length of common prefix */
int nSuffix; /* Length of common suffix */
const char *zLeft; /* Text of the left line */
const char *zRight; /* Text of the right line */
nLeft = pLeft->h & LENGTH_MASK;
zLeft = pLeft->z;
nRight = pRight->h & LENGTH_MASK;
zRight = pRight->z;
|
| ︙ | ︙ | |||
695 696 697 698 699 700 701 702 703 704 705 706 707 708 | int r; /* Index into R[] */ int nr; /* Number of COPY/DELETE/INSERT triples to process */ int mxr; /* Maximum value for r */ int na, nb; /* Number of lines shown from A and B */ int i, j; /* Loop counters */ int m, ma, mb;/* Number of lines to output */ int skip; /* Number of lines to skip */ SbsLine s; /* Output line buffer */ s.zLine = fossil_malloc( 10*width + 100 ); if( s.zLine==0 ) return; s.width = width; s.escHtml = escHtml; s.iStart = -1; | > | 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 | int r; /* Index into R[] */ int nr; /* Number of COPY/DELETE/INSERT triples to process */ int mxr; /* Maximum value for r */ int na, nb; /* Number of lines shown from A and B */ int i, j; /* Loop counters */ int m, ma, mb;/* Number of lines to output */ int skip; /* Number of lines to skip */ int nChunk = 0; /* Number of chunks of diff output seen so far */ SbsLine s; /* Output line buffer */ s.zLine = fossil_malloc( 10*width + 100 ); if( s.zLine==0 ) return; s.width = width; s.escHtml = escHtml; s.iStart = -1; |
| ︙ | ︙ | |||
748 749 750 751 752 753 754 755 756 757 758 759 760 761 |
if( escHtml ){
blob_appendf(pOut, "<span class=\"diffhr\">%.*c</span>\n",
width*2+16, '.');
}else{
blob_appendf(pOut, "%.*c\n", width*2+16, '.');
}
}
/* Show the initial common area */
a += skip;
b += skip;
m = R[r] - skip;
for(j=0; j<m; j++){
s.n = 0;
| > > > > | 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 |
if( escHtml ){
blob_appendf(pOut, "<span class=\"diffhr\">%.*c</span>\n",
width*2+16, '.');
}else{
blob_appendf(pOut, "%.*c\n", width*2+16, '.');
}
}
nChunk++;
if( escHtml ){
blob_appendf(pOut, "<a name=\"chunk%d\"></a>\n", nChunk);
}
/* Show the initial common area */
a += skip;
b += skip;
m = R[r] - skip;
for(j=0; j<m; j++){
s.n = 0;
|
| ︙ | ︙ |