Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Improved handling of check-in diff display when files have changed names but are otherwise unmodified. Requires a rebuild to get the display exactly right since the MLINK table needs to be recomputed. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
067cda2645c038e5a4b3e6473f8ac558 |
| User & Date: | drh 2011-06-02 20:49:30.679 |
Context
|
2011-06-03
| ||
| 14:24 | Update the built-in SQLite to the latest 3.7.7 alpha. ... (check-in: 9f9047d686 user: drh tags: trunk) | |
|
2011-06-02
| ||
| 23:45 | Minor code clean-ups: (1) shorten lines to less than 80 characters (2) remove C99-isms, especially intermixed code and declarations. Also merge in the moved file display fix from the trunk. ... (check-in: a164b63a67 user: drh tags: ben-testing) | |
| 20:49 | Improved handling of check-in diff display when files have changed names but are otherwise unmodified. Requires a rebuild to get the display exactly right since the MLINK table needs to be recomputed. ... (check-in: 067cda2645 user: drh tags: trunk) | |
| 14:56 | Make sure the built-in "now()" function is available to peer-repository connections for single-signon operations. Ticket [3233c3dad99d57ad]. ... (check-in: 74ecc4d646 user: drh tags: trunk) | |
Changes
Changes to src/info.c.
| ︙ | ︙ | |||
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 |
** Write a line of web-page output that shows changes that have occurred
** to a file between two check-ins.
*/
static void append_file_change_line(
const char *zName, /* Name of the file that has changed */
const char *zOld, /* blob.uuid before change. NULL for added files */
const char *zNew, /* blob.uuid after change. NULL for deletes */
int showDiff, /* Show edit diffs if true */
int mperm /* EXE permission for zNew */
){
if( !g.okHistory ){
if( zNew==0 ){
@ <p>Deleted %h(zName)</p>
}else if( zOld==0 ){
@ <p>Added %h(zName)</p>
}else if( fossil_strcmp(zNew, zOld)==0 ){
@ <p>Execute permission %s(mperm?"set":"cleared") for %h(zName)</p>
}else{
@ <p>Changes to %h(zName)</p>
}
if( showDiff ){
@ <blockquote><pre>
append_diff(zOld, zNew);
@ </pre></blockquote>
}
}else{
if( zOld && zNew ){
if( fossil_strcmp(zOld, zNew)!=0 ){
@ <p>Modified <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
@ from <a href="%s(g.zTop)/artifact/%s(zOld)">[%S(zOld)]</a>
@ to <a href="%s(g.zTop)/artifact/%s(zNew)">[%S(zNew)].</a>
}else{
@ <p>Execute permission %s(mperm?"set":"cleared") for
@ <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
}
}else if( zOld ){
@ <p>Deleted <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
@ version <a href="%s(g.zTop)/artifact/%s(zOld)">[%S(zOld)]</a>
}else{
@ <p>Added <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
@ version <a href="%s(g.zTop)/artifact/%s(zNew)">[%S(zNew)]</a>
}
if( showDiff ){
@ <blockquote><pre>
append_diff(zOld, zNew);
@ </pre></blockquote>
| > > > > > > > | | 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 |
** Write a line of web-page output that shows changes that have occurred
** to a file between two check-ins.
*/
static void append_file_change_line(
const char *zName, /* Name of the file that has changed */
const char *zOld, /* blob.uuid before change. NULL for added files */
const char *zNew, /* blob.uuid after change. NULL for deletes */
const char *zOldName, /* Prior name. NULL if no name change. */
int showDiff, /* Show edit diffs if true */
int mperm /* EXE permission for zNew */
){
if( !g.okHistory ){
if( zNew==0 ){
@ <p>Deleted %h(zName)</p>
}else if( zOld==0 ){
@ <p>Added %h(zName)</p>
}else if( zOldName!=0 && fossil_strcmp(zName,zOldName)!=0 ){
@ <p>Name change from %h(zOldName) to %h(zName)
}else if( fossil_strcmp(zNew, zOld)==0 ){
@ <p>Execute permission %s(mperm?"set":"cleared") for %h(zName)</p>
}else{
@ <p>Changes to %h(zName)</p>
}
if( showDiff ){
@ <blockquote><pre>
append_diff(zOld, zNew);
@ </pre></blockquote>
}
}else{
if( zOld && zNew ){
if( fossil_strcmp(zOld, zNew)!=0 ){
@ <p>Modified <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
@ from <a href="%s(g.zTop)/artifact/%s(zOld)">[%S(zOld)]</a>
@ to <a href="%s(g.zTop)/artifact/%s(zNew)">[%S(zNew)].</a>
}else if( zOldName!=0 && fossil_strcmp(zName,zOldName)!=0 ){
@ <p>Name change from
@ from <a href="%s(g.zTop)/finfo?name=%T(zOldName)">%h(zOldName)</a>
@ to <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>.
}else{
@ <p>Execute permission %s(mperm?"set":"cleared") for
@ <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
}
}else if( zOld ){
@ <p>Deleted <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
@ version <a href="%s(g.zTop)/artifact/%s(zOld)">[%S(zOld)]</a>
}else{
@ <p>Added <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
@ version <a href="%s(g.zTop)/artifact/%s(zNew)">[%S(zNew)]</a>
}
if( showDiff ){
@ <blockquote><pre>
append_diff(zOld, zNew);
@ </pre></blockquote>
}else if( zOld && zNew && fossil_strcmp(zOld,zNew)!=0 ){
@
@ <a href="%s(g.zTop)/fdiff?v1=%S(zOld)&v2=%S(zNew)">[diff]</a>
}
@ </p>
}
}
|
| ︙ | ︙ | |||
509 510 511 512 513 514 515 |
}else{
@ <a href="%s(g.zTop)/vinfo/%T(zName)">[show diffs]</a>
}
}
@
@ <a href="%s(g.zTop)/vpatch?from=%S(zParent)&to=%S(zUuid)">[patch]</a><br/>
db_prepare(&q,
| | > | > > | | 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 |
}else{
@ <a href="%s(g.zTop)/vinfo/%T(zName)">[show diffs]</a>
}
}
@
@ <a href="%s(g.zTop)/vpatch?from=%S(zParent)&to=%S(zUuid)">[patch]</a><br/>
db_prepare(&q,
"SELECT name,"
" mperm,"
" (SELECT uuid FROM blob WHERE rid=mlink.pid),"
" (SELECT uuid FROM blob WHERE rid=mlink.fid),"
" (SELECT name FROM filename WHERE filename.fnid=mlink.pfnid)"
" FROM mlink JOIN filename ON filename.fnid=mlink.fnid"
" WHERE mlink.mid=%d"
" ORDER BY name",
rid
);
while( db_step(&q)==SQLITE_ROW ){
const char *zName = db_column_text(&q,0);
int mperm = db_column_int(&q, 1);
const char *zOld = db_column_text(&q,2);
const char *zNew = db_column_text(&q,3);
const char *zOldName = db_column_text(&q, 4);
append_file_change_line(zName, zOld, zNew, zOldName, showDiff, mperm);
}
db_finalize(&q);
}
style_footer();
}
/*
|
| ︙ | ︙ | |||
713 714 715 716 717 718 719 |
}else if( pFileTo==0 ){
cmp = -1;
}else{
cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName);
}
if( cmp<0 ){
append_file_change_line(pFileFrom->zName,
| | | | | 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 |
}else if( pFileTo==0 ){
cmp = -1;
}else{
cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName);
}
if( cmp<0 ){
append_file_change_line(pFileFrom->zName,
pFileFrom->zUuid, 0, 0, 0, 0);
pFileFrom = manifest_file_next(pFrom, 0);
}else if( cmp>0 ){
append_file_change_line(pFileTo->zName,
0, pFileTo->zUuid, 0, 0,
manifest_file_mperm(pFileTo));
pFileTo = manifest_file_next(pTo, 0);
}else if( fossil_strcmp(pFileFrom->zUuid, pFileTo->zUuid)==0 ){
/* No changes */
pFileFrom = manifest_file_next(pFrom, 0);
pFileTo = manifest_file_next(pTo, 0);
}else{
append_file_change_line(pFileFrom->zName,
pFileFrom->zUuid,
pFileTo->zUuid, 0, showDetail,
manifest_file_mperm(pFileTo));
pFileFrom = manifest_file_next(pFrom, 0);
pFileTo = manifest_file_next(pTo, 0);
}
}
manifest_destroy(pFrom);
manifest_destroy(pTo);
|
| ︙ | ︙ |
Changes to src/manifest.c.
| ︙ | ︙ | |||
1321 1322 1323 1324 1325 1326 1327 |
if( pParentFile->zUuid ) continue;
pChildFile = manifest_file_seek(pChild, pParentFile->zName);
if( pChildFile ){
add_one_mlink(cid, 0, pChildFile->zUuid, pChildFile->zName, 0,
isPublic, manifest_file_mperm(pChildFile));
}
}
| | | 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 |
if( pParentFile->zUuid ) continue;
pChildFile = manifest_file_seek(pChild, pParentFile->zName);
if( pChildFile ){
add_one_mlink(cid, 0, pChildFile->zUuid, pChildFile->zName, 0,
isPublic, manifest_file_mperm(pChildFile));
}
}
}else if( pChild->zBaseline==0 && pParent->zBaseline!=0 ){
/* Parent is a delta but pChild is a baseline. Look for files that are
** present in pParent but which are missing from pChild and mark them
** has having been deleted. */
manifest_file_rewind(pParent);
while( (pParentFile = manifest_file_next(pParent,0))!=0 ){
pChildFile = manifest_file_seek(pChild, pParentFile->zName);
if( pChildFile==0 && pParentFile->zUuid!=0 ){
|
| ︙ | ︙ |