Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Do a better job of showing when a file is added, deleted, or renamed in the /finfo page. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
a0bca48147b3ff1dca048b0e1d9fff28 |
| User & Date: | drh 2020-10-19 20:09:25.463 |
Context
|
2020-10-19
| ||
| 20:52 | Update the built-in SQLite to fix a bug introduced by the previous update. check-in: 0fac549b56 user: drh tags: trunk | |
| 20:09 | Do a better job of showing when a file is added, deleted, or renamed in the /finfo page. check-in: a0bca48147 user: drh tags: trunk | |
| 18:24 | Improvements to /finfo: Show all file rename events. The "rid" for each timeline entry must be a combination of the file-id "fid" and the filename-id "fnid" since either one of those two might change which should result in a new entry on the timeline. check-in: 8c598d7232 user: drh tags: trunk | |
Changes
Changes to src/finfo.c.
| ︙ | ︙ | |||
399 400 401 402 403 404 405 |
" WHERE filename=%Q)\n" /* %Q is the filename */
" UNION\n"
" SELECT mlink.fid, mlink.fnid\n"
" FROM clade, mlink\n"
" WHERE clade.fid=mlink.pid\n"
" AND ((mlink.pfnid=0 AND mlink.fnid=clade.fnid)\n"
" OR mlink.pfnid=clade.fnid)\n"
| | > > | 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 |
" WHERE filename=%Q)\n" /* %Q is the filename */
" UNION\n"
" SELECT mlink.fid, mlink.fnid\n"
" FROM clade, mlink\n"
" WHERE clade.fid=mlink.pid\n"
" AND ((mlink.pfnid=0 AND mlink.fnid=clade.fnid)\n"
" OR mlink.pfnid=clade.fnid)\n"
" AND (mlink.fid>0 OR NOT EXISTS(SELECT 1 FROM mlink AS mx"
" WHERE mx.mid=mlink.mid AND mx.pid=mlink.pid"
" AND mx.fid>0 AND mx.pfnid=mlink.fnid))\n"
" UNION\n"
" SELECT mlink.pid,"
" CASE WHEN mlink.pfnid>0 THEN mlink.pfnid ELSE mlink.fnid END\n"
" FROM clade, mlink\n"
" WHERE mlink.pid>0\n"
" AND mlink.fid=clade.fid\n"
" AND mlink.fnid=clade.fnid\n"
|
| ︙ | ︙ | |||
443 444 445 446 447 448 449 |
" (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0"
" AND tagxref.rid=mlink.mid),\n" /* Branchname */
" mlink.mid,\n" /* check-in ID */
" mlink.pfnid,\n" /* Previous filename */
" blob.size,\n" /* File size */
" mlink.fnid,\n" /* Current filename */
" filename.name\n" /* Current filename */
| | > > | < < | 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 |
" (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0"
" AND tagxref.rid=mlink.mid),\n" /* Branchname */
" mlink.mid,\n" /* check-in ID */
" mlink.pfnid,\n" /* Previous filename */
" blob.size,\n" /* File size */
" mlink.fnid,\n" /* Current filename */
" filename.name\n" /* Current filename */
"FROM clade CROSS JOIN mlink, event"
" LEFT JOIN blob ON blob.rid=clade.fid"
" LEFT JOIN filename ON filename.fnid=clade.fnid\n"
"WHERE mlink.fnid=clade.fnid AND mlink.fid=clade.fid\n"
" AND event.objid=mlink.mid\n",
TAG_BRANCH
);
if( (zA = P("a"))!=0 ){
blob_append_sql(&sql, " AND event.mtime>=%.16g\n",
symbolic_name_to_mtime(zA,0));
url_add_parameter(&url, "a", zA);
}
|
| ︙ | ︙ | |||
620 621 622 623 624 625 626 627 628 629 630 631 632 633 |
}else{
@ <td class="timeline%s(zStyle)Cell">
}
if( tmFlags & TIMELINE_COMPACT ){
@ <span class='timelineCompactComment' data-id='%d(frid)'>
}else{
@ <span class='timeline%s(zStyle)Comment'>
if( (tmFlags & TIMELINE_VERBOSE)!=0 && zUuid ){
hyperlink_to_version(zUuid);
@ part of check-in \
hyperlink_to_version(zCkin);
}
}
@ %W(zCom)</span>
| > > > > > > > > > > > > > > > > > > > > > > > > > | 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 |
}else{
@ <td class="timeline%s(zStyle)Cell">
}
if( tmFlags & TIMELINE_COMPACT ){
@ <span class='timelineCompactComment' data-id='%d(frid)'>
}else{
@ <span class='timeline%s(zStyle)Comment'>
if( pfnid ){
char *zPrevName = db_text(0,"SELECT name FROM filename WHERE fnid=%d",
pfnid);
@ <b>Renamed</b> %h(zPrevName) → %h(zFName).
fossil_free(zPrevName);
}
if( zUuid && ridTo==0 && nParent==0 ){
@ <b>Added:</b>
}
if( zUuid==0 ){
char *zNewName;
zNewName = db_text(0,
"SELECT name FROM filename WHERE fnid = "
" (SELECT fnid FROM mlink"
" WHERE mid=%d"
" AND pfnid IN (SELECT fnid FROM filename WHERE name=%Q))",
fmid, zFName);
if( zNewName ){
@ <b>Renamed</b> to
@ %z(href("%R/finfo?name=%t",zNewName))%h(zNewName)</a>.
fossil_free(zNewName);
}else{
@ <b>Deleted:</b>
}
}
if( (tmFlags & TIMELINE_VERBOSE)!=0 && zUuid ){
hyperlink_to_version(zUuid);
@ part of check-in \
hyperlink_to_version(zCkin);
}
}
@ %W(zCom)</span>
|
| ︙ | ︙ | |||
643 644 645 646 647 648 649 |
@ <td class="timelineDetailCell">
}
}
if( tmFlags & TIMELINE_COMPACT ){
cgi_printf("<span class='clutter' id='detail-%d'>",frid);
}
cgi_printf("<span class='timeline%sDetail'>", zStyle);
| < < < < < < | 670 671 672 673 674 675 676 677 678 679 680 681 682 683 |
@ <td class="timelineDetailCell">
}
}
if( tmFlags & TIMELINE_COMPACT ){
cgi_printf("<span class='clutter' id='detail-%d'>",frid);
}
cgi_printf("<span class='timeline%sDetail'>", zStyle);
if( tmFlags & (TIMELINE_COMPACT|TIMELINE_VERBOSE) ) cgi_printf("(");
if( zUuid && (tmFlags & TIMELINE_VERBOSE)==0 ){
@ file: %z(href("%R/file?name=%T&ci=%!S",zFName,zCkin))\
@ [%S(zUuid)]</a>
if( fShowId ){
int srcId = delta_source_rid(frid);
if( srcId>0 ){
|
| ︙ | ︙ | |||
675 676 677 678 679 680 681 |
hyperlink_to_user(zUser, zDate, ",");
@ branch: %z(href("%R/timeline?t=%T",zBr))%h(zBr)</a>,
if( tmFlags & (TIMELINE_COMPACT|TIMELINE_VERBOSE) ){
@ size: %d(szFile))
}else{
@ size: %d(szFile)
}
| < < < < < < < < < < < < < < < < < < < | > > > | 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 |
hyperlink_to_user(zUser, zDate, ",");
@ branch: %z(href("%R/timeline?t=%T",zBr))%h(zBr)</a>,
if( tmFlags & (TIMELINE_COMPACT|TIMELINE_VERBOSE) ){
@ size: %d(szFile))
}else{
@ size: %d(szFile)
}
if( g.perm.Hyperlink && zUuid ){
const char *z = zFName;
@ <span id='links-%d(frid)'><span class='timelineExtraLinks'>
@ %z(href("%R/annotate?filename=%h&checkin=%s",z,zCkin))
@ [annotate]</a>
@ %z(href("%R/blame?filename=%h&checkin=%s",z,zCkin))
@ [blame]</a>
@ %z(href("%R/timeline?n=all&uf=%!S",zUuid))[check-ins using]</a>
if( fpid>0 ){
@ %z(href("%R/fdiff?v1=%!S&v2=%!S",zPUuid,zUuid))[diff]</a>
}
if( fileedit_is_editable(zFName) ){
@ %z(href("%R/fileedit?filename=%T&checkin=%!S",zFName,zCkin))\
@ [edit]</a>
}
@ </span></span>
}
if( fDebug & FINFO_DEBUG_MLINK ){
int ii;
char *zAncLink;
@ <br />fid=%d(frid) \
@ graph-id=%d(frid>0 ? frid*(mxfnid+1)+fnid : fpid+1000000000) \
@ pid=%d(fpid) mid=%d(fmid) fnid=%d(fnid) \
@ pfnid=%d(pfnid) mxfnid=%d(mxfnid)
if( nParent>0 ){
@ parents=%d(aParent[0])
for(ii=1; ii<nParent; ii++){
@ %d(aParent[ii])
}
}
zAncLink = href("%R/finfo?name=%T&from=%!S&debug=1",zFName,zCkin);
|
| ︙ | ︙ |