Fossil SCM
Use the correct filename in hyperlinks in the new /finfo page.
Commit
0af477224547fea832dae6a6c740d89da7cf293288cbebf295107922dd37cdfd
Parent
b54d9396f9de3cb…
1 file changed
+13
-10
+13
-10
| --- src/finfo.c | ||
| +++ src/finfo.c | ||
| @@ -464,15 +464,17 @@ | ||
| 464 | 464 | " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0" |
| 465 | 465 | " AND tagxref.rid=mlink.mid),\n" /* Branchname */ |
| 466 | 466 | " mlink.mid,\n" /* check-in ID */ |
| 467 | 467 | " mlink.pfnid,\n" /* Previous filename */ |
| 468 | 468 | " blob.size,\n" /* File size */ |
| 469 | - " mlink.fnid\n" /* Current filename */ | |
| 470 | - "FROM clade, mlink, event, blob\n" | |
| 469 | + " mlink.fnid,\n" /* Current filename */ | |
| 470 | + " filename.name\n" /* Current filename */ | |
| 471 | + "FROM clade, mlink, event, blob, filename\n" | |
| 471 | 472 | "WHERE mlink.fnid=clade.fnid AND mlink.fid=clade.fid\n" |
| 472 | 473 | " AND event.objid=mlink.mid\n" |
| 473 | - " AND blob.rid=clade.fid\n", | |
| 474 | + " AND blob.rid=clade.fid\n" | |
| 475 | + " AND filename.fnid=clade.fnid\n", | |
| 474 | 476 | TAG_BRANCH |
| 475 | 477 | ); |
| 476 | 478 | if( (zA = P("a"))!=0 ){ |
| 477 | 479 | blob_append_sql(&sql, " AND event.mtime>=%.16g\n", |
| 478 | 480 | symbolic_name_to_mtime(zA,0)); |
| @@ -587,10 +589,11 @@ | ||
| 587 | 589 | const char *zBr = db_column_text(&q, 9); |
| 588 | 590 | int fmid = db_column_int(&q, 10); |
| 589 | 591 | int pfnid = db_column_int(&q, 11); |
| 590 | 592 | int szFile = db_column_int(&q, 12); |
| 591 | 593 | int fnid = db_column_int(&q, 13); |
| 594 | + const char *zFName = db_column_text(&q,14); | |
| 592 | 595 | int gidx; |
| 593 | 596 | char zTime[10]; |
| 594 | 597 | int nParent = 0; |
| 595 | 598 | int aParent[GR_MAX_RAIL]; |
| 596 | 599 | |
| @@ -623,11 +626,11 @@ | ||
| 623 | 626 | @ <tr class='timelineSelected'> |
| 624 | 627 | }else{ |
| 625 | 628 | @ <tr> |
| 626 | 629 | } |
| 627 | 630 | @ <td class="timelineTime">\ |
| 628 | - @ %z(href("%R/file?name=%T&ci=%!S",zFilename,zCkin))%s(zTime)</a></td> | |
| 631 | + @ %z(href("%R/file?name=%T&ci=%!S",zFName,zCkin))%s(zTime)</a></td> | |
| 629 | 632 | @ <td class="timelineGraph"><div id="m%d(gidx)" class="tl-nodemark"></div> |
| 630 | 633 | @ </td> |
| 631 | 634 | if( zBgClr && zBgClr[0] ){ |
| 632 | 635 | @ <td class="timeline%s(zStyle)Cell" id='mc%d(gidx)'> |
| 633 | 636 | }else{ |
| @@ -660,11 +663,11 @@ | ||
| 660 | 663 | cgi_printf("<span class='clutter' id='detail-%d'>",frid); |
| 661 | 664 | } |
| 662 | 665 | cgi_printf("<span class='timeline%sDetail'>", zStyle); |
| 663 | 666 | if( tmFlags & (TIMELINE_COMPACT|TIMELINE_VERBOSE) ) cgi_printf("("); |
| 664 | 667 | if( zUuid && (tmFlags & TIMELINE_VERBOSE)==0 ){ |
| 665 | - @ file: %z(href("%R/file?name=%T&ci=%!S",zFilename,zCkin))\ | |
| 668 | + @ file: %z(href("%R/file?name=%T&ci=%!S",zFName,zCkin))\ | |
| 666 | 669 | @ [%S(zUuid)]</a> |
| 667 | 670 | if( fShowId ){ |
| 668 | 671 | int srcId = delta_source_rid(frid); |
| 669 | 672 | if( srcId>0 ){ |
| 670 | 673 | @ id: %d(frid)←%d(srcId) |
| @@ -701,32 +704,32 @@ | ||
| 701 | 704 | zNewName = db_text(0, |
| 702 | 705 | "SELECT name FROM filename WHERE fnid = " |
| 703 | 706 | " (SELECT fnid FROM mlink" |
| 704 | 707 | " WHERE mid=%d" |
| 705 | 708 | " AND pfnid IN (SELECT fnid FROM filename WHERE name=%Q))", |
| 706 | - fmid, zFilename); | |
| 709 | + fmid, zFName); | |
| 707 | 710 | if( zNewName ){ |
| 708 | 711 | @ <b>Renamed</b> to |
| 709 | 712 | @ %z(href("%R/finfo?name=%t",zNewName))%h(zNewName)</a> |
| 710 | 713 | fossil_free(zNewName); |
| 711 | 714 | }else{ |
| 712 | 715 | @ <b>Deleted</b> |
| 713 | 716 | } |
| 714 | 717 | } |
| 715 | 718 | if( g.perm.Hyperlink && zUuid ){ |
| 716 | - const char *z = zFilename; | |
| 719 | + const char *z = zFName; | |
| 717 | 720 | @ <span id='links-%d(frid)'><span class='timelineExtraLinks'> |
| 718 | 721 | @ %z(href("%R/annotate?filename=%h&checkin=%s",z,zCkin)) |
| 719 | 722 | @ [annotate]</a> |
| 720 | 723 | @ %z(href("%R/blame?filename=%h&checkin=%s",z,zCkin)) |
| 721 | 724 | @ [blame]</a> |
| 722 | 725 | @ %z(href("%R/timeline?n=all&uf=%!S",zUuid))[check-ins using]</a> |
| 723 | 726 | if( fpid>0 ){ |
| 724 | 727 | @ %z(href("%R/fdiff?v1=%!S&v2=%!S",zPUuid,zUuid))[diff]</a> |
| 725 | 728 | } |
| 726 | - if( fileedit_is_editable(zFilename) ){ | |
| 727 | - @ %z(href("%R/fileedit?filename=%T&checkin=%!S",zFilename,zCkin))\ | |
| 729 | + if( fileedit_is_editable(zFName) ){ | |
| 730 | + @ %z(href("%R/fileedit?filename=%T&checkin=%!S",zFName,zCkin))\ | |
| 728 | 731 | @ [edit]</a> |
| 729 | 732 | } |
| 730 | 733 | @ </span></span> |
| 731 | 734 | } |
| 732 | 735 | if( fDebug & FINFO_DEBUG_MLINK ){ |
| @@ -737,11 +740,11 @@ | ||
| 737 | 740 | @ parents=%d(aParent[0]) |
| 738 | 741 | for(ii=1; ii<nParent; ii++){ |
| 739 | 742 | @ %d(aParent[ii]) |
| 740 | 743 | } |
| 741 | 744 | } |
| 742 | - zAncLink = href("%R/finfo?name=%T&from=%!S&debug=1",zFilename,zCkin); | |
| 745 | + zAncLink = href("%R/finfo?name=%T&from=%!S&debug=1",zFName,zCkin); | |
| 743 | 746 | @ %z(zAncLink)[ancestry]</a> |
| 744 | 747 | } |
| 745 | 748 | tag_private_status(frid); |
| 746 | 749 | /* End timelineDetail */ |
| 747 | 750 | if( tmFlags & TIMELINE_COMPACT ){ |
| 748 | 751 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -464,15 +464,17 @@ | |
| 464 | " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0" |
| 465 | " AND tagxref.rid=mlink.mid),\n" /* Branchname */ |
| 466 | " mlink.mid,\n" /* check-in ID */ |
| 467 | " mlink.pfnid,\n" /* Previous filename */ |
| 468 | " blob.size,\n" /* File size */ |
| 469 | " mlink.fnid\n" /* Current filename */ |
| 470 | "FROM clade, mlink, event, blob\n" |
| 471 | "WHERE mlink.fnid=clade.fnid AND mlink.fid=clade.fid\n" |
| 472 | " AND event.objid=mlink.mid\n" |
| 473 | " AND blob.rid=clade.fid\n", |
| 474 | TAG_BRANCH |
| 475 | ); |
| 476 | if( (zA = P("a"))!=0 ){ |
| 477 | blob_append_sql(&sql, " AND event.mtime>=%.16g\n", |
| 478 | symbolic_name_to_mtime(zA,0)); |
| @@ -587,10 +589,11 @@ | |
| 587 | const char *zBr = db_column_text(&q, 9); |
| 588 | int fmid = db_column_int(&q, 10); |
| 589 | int pfnid = db_column_int(&q, 11); |
| 590 | int szFile = db_column_int(&q, 12); |
| 591 | int fnid = db_column_int(&q, 13); |
| 592 | int gidx; |
| 593 | char zTime[10]; |
| 594 | int nParent = 0; |
| 595 | int aParent[GR_MAX_RAIL]; |
| 596 | |
| @@ -623,11 +626,11 @@ | |
| 623 | @ <tr class='timelineSelected'> |
| 624 | }else{ |
| 625 | @ <tr> |
| 626 | } |
| 627 | @ <td class="timelineTime">\ |
| 628 | @ %z(href("%R/file?name=%T&ci=%!S",zFilename,zCkin))%s(zTime)</a></td> |
| 629 | @ <td class="timelineGraph"><div id="m%d(gidx)" class="tl-nodemark"></div> |
| 630 | @ </td> |
| 631 | if( zBgClr && zBgClr[0] ){ |
| 632 | @ <td class="timeline%s(zStyle)Cell" id='mc%d(gidx)'> |
| 633 | }else{ |
| @@ -660,11 +663,11 @@ | |
| 660 | cgi_printf("<span class='clutter' id='detail-%d'>",frid); |
| 661 | } |
| 662 | cgi_printf("<span class='timeline%sDetail'>", zStyle); |
| 663 | if( tmFlags & (TIMELINE_COMPACT|TIMELINE_VERBOSE) ) cgi_printf("("); |
| 664 | if( zUuid && (tmFlags & TIMELINE_VERBOSE)==0 ){ |
| 665 | @ file: %z(href("%R/file?name=%T&ci=%!S",zFilename,zCkin))\ |
| 666 | @ [%S(zUuid)]</a> |
| 667 | if( fShowId ){ |
| 668 | int srcId = delta_source_rid(frid); |
| 669 | if( srcId>0 ){ |
| 670 | @ id: %d(frid)←%d(srcId) |
| @@ -701,32 +704,32 @@ | |
| 701 | zNewName = db_text(0, |
| 702 | "SELECT name FROM filename WHERE fnid = " |
| 703 | " (SELECT fnid FROM mlink" |
| 704 | " WHERE mid=%d" |
| 705 | " AND pfnid IN (SELECT fnid FROM filename WHERE name=%Q))", |
| 706 | fmid, zFilename); |
| 707 | if( zNewName ){ |
| 708 | @ <b>Renamed</b> to |
| 709 | @ %z(href("%R/finfo?name=%t",zNewName))%h(zNewName)</a> |
| 710 | fossil_free(zNewName); |
| 711 | }else{ |
| 712 | @ <b>Deleted</b> |
| 713 | } |
| 714 | } |
| 715 | if( g.perm.Hyperlink && zUuid ){ |
| 716 | const char *z = zFilename; |
| 717 | @ <span id='links-%d(frid)'><span class='timelineExtraLinks'> |
| 718 | @ %z(href("%R/annotate?filename=%h&checkin=%s",z,zCkin)) |
| 719 | @ [annotate]</a> |
| 720 | @ %z(href("%R/blame?filename=%h&checkin=%s",z,zCkin)) |
| 721 | @ [blame]</a> |
| 722 | @ %z(href("%R/timeline?n=all&uf=%!S",zUuid))[check-ins using]</a> |
| 723 | if( fpid>0 ){ |
| 724 | @ %z(href("%R/fdiff?v1=%!S&v2=%!S",zPUuid,zUuid))[diff]</a> |
| 725 | } |
| 726 | if( fileedit_is_editable(zFilename) ){ |
| 727 | @ %z(href("%R/fileedit?filename=%T&checkin=%!S",zFilename,zCkin))\ |
| 728 | @ [edit]</a> |
| 729 | } |
| 730 | @ </span></span> |
| 731 | } |
| 732 | if( fDebug & FINFO_DEBUG_MLINK ){ |
| @@ -737,11 +740,11 @@ | |
| 737 | @ parents=%d(aParent[0]) |
| 738 | for(ii=1; ii<nParent; ii++){ |
| 739 | @ %d(aParent[ii]) |
| 740 | } |
| 741 | } |
| 742 | zAncLink = href("%R/finfo?name=%T&from=%!S&debug=1",zFilename,zCkin); |
| 743 | @ %z(zAncLink)[ancestry]</a> |
| 744 | } |
| 745 | tag_private_status(frid); |
| 746 | /* End timelineDetail */ |
| 747 | if( tmFlags & TIMELINE_COMPACT ){ |
| 748 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -464,15 +464,17 @@ | |
| 464 | " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0" |
| 465 | " AND tagxref.rid=mlink.mid),\n" /* Branchname */ |
| 466 | " mlink.mid,\n" /* check-in ID */ |
| 467 | " mlink.pfnid,\n" /* Previous filename */ |
| 468 | " blob.size,\n" /* File size */ |
| 469 | " mlink.fnid,\n" /* Current filename */ |
| 470 | " filename.name\n" /* Current filename */ |
| 471 | "FROM clade, mlink, event, blob, filename\n" |
| 472 | "WHERE mlink.fnid=clade.fnid AND mlink.fid=clade.fid\n" |
| 473 | " AND event.objid=mlink.mid\n" |
| 474 | " AND blob.rid=clade.fid\n" |
| 475 | " AND filename.fnid=clade.fnid\n", |
| 476 | TAG_BRANCH |
| 477 | ); |
| 478 | if( (zA = P("a"))!=0 ){ |
| 479 | blob_append_sql(&sql, " AND event.mtime>=%.16g\n", |
| 480 | symbolic_name_to_mtime(zA,0)); |
| @@ -587,10 +589,11 @@ | |
| 589 | const char *zBr = db_column_text(&q, 9); |
| 590 | int fmid = db_column_int(&q, 10); |
| 591 | int pfnid = db_column_int(&q, 11); |
| 592 | int szFile = db_column_int(&q, 12); |
| 593 | int fnid = db_column_int(&q, 13); |
| 594 | const char *zFName = db_column_text(&q,14); |
| 595 | int gidx; |
| 596 | char zTime[10]; |
| 597 | int nParent = 0; |
| 598 | int aParent[GR_MAX_RAIL]; |
| 599 | |
| @@ -623,11 +626,11 @@ | |
| 626 | @ <tr class='timelineSelected'> |
| 627 | }else{ |
| 628 | @ <tr> |
| 629 | } |
| 630 | @ <td class="timelineTime">\ |
| 631 | @ %z(href("%R/file?name=%T&ci=%!S",zFName,zCkin))%s(zTime)</a></td> |
| 632 | @ <td class="timelineGraph"><div id="m%d(gidx)" class="tl-nodemark"></div> |
| 633 | @ </td> |
| 634 | if( zBgClr && zBgClr[0] ){ |
| 635 | @ <td class="timeline%s(zStyle)Cell" id='mc%d(gidx)'> |
| 636 | }else{ |
| @@ -660,11 +663,11 @@ | |
| 663 | cgi_printf("<span class='clutter' id='detail-%d'>",frid); |
| 664 | } |
| 665 | cgi_printf("<span class='timeline%sDetail'>", zStyle); |
| 666 | if( tmFlags & (TIMELINE_COMPACT|TIMELINE_VERBOSE) ) cgi_printf("("); |
| 667 | if( zUuid && (tmFlags & TIMELINE_VERBOSE)==0 ){ |
| 668 | @ file: %z(href("%R/file?name=%T&ci=%!S",zFName,zCkin))\ |
| 669 | @ [%S(zUuid)]</a> |
| 670 | if( fShowId ){ |
| 671 | int srcId = delta_source_rid(frid); |
| 672 | if( srcId>0 ){ |
| 673 | @ id: %d(frid)←%d(srcId) |
| @@ -701,32 +704,32 @@ | |
| 704 | zNewName = db_text(0, |
| 705 | "SELECT name FROM filename WHERE fnid = " |
| 706 | " (SELECT fnid FROM mlink" |
| 707 | " WHERE mid=%d" |
| 708 | " AND pfnid IN (SELECT fnid FROM filename WHERE name=%Q))", |
| 709 | fmid, zFName); |
| 710 | if( zNewName ){ |
| 711 | @ <b>Renamed</b> to |
| 712 | @ %z(href("%R/finfo?name=%t",zNewName))%h(zNewName)</a> |
| 713 | fossil_free(zNewName); |
| 714 | }else{ |
| 715 | @ <b>Deleted</b> |
| 716 | } |
| 717 | } |
| 718 | if( g.perm.Hyperlink && zUuid ){ |
| 719 | const char *z = zFName; |
| 720 | @ <span id='links-%d(frid)'><span class='timelineExtraLinks'> |
| 721 | @ %z(href("%R/annotate?filename=%h&checkin=%s",z,zCkin)) |
| 722 | @ [annotate]</a> |
| 723 | @ %z(href("%R/blame?filename=%h&checkin=%s",z,zCkin)) |
| 724 | @ [blame]</a> |
| 725 | @ %z(href("%R/timeline?n=all&uf=%!S",zUuid))[check-ins using]</a> |
| 726 | if( fpid>0 ){ |
| 727 | @ %z(href("%R/fdiff?v1=%!S&v2=%!S",zPUuid,zUuid))[diff]</a> |
| 728 | } |
| 729 | if( fileedit_is_editable(zFName) ){ |
| 730 | @ %z(href("%R/fileedit?filename=%T&checkin=%!S",zFName,zCkin))\ |
| 731 | @ [edit]</a> |
| 732 | } |
| 733 | @ </span></span> |
| 734 | } |
| 735 | if( fDebug & FINFO_DEBUG_MLINK ){ |
| @@ -737,11 +740,11 @@ | |
| 740 | @ parents=%d(aParent[0]) |
| 741 | for(ii=1; ii<nParent; ii++){ |
| 742 | @ %d(aParent[ii]) |
| 743 | } |
| 744 | } |
| 745 | zAncLink = href("%R/finfo?name=%T&from=%!S&debug=1",zFName,zCkin); |
| 746 | @ %z(zAncLink)[ancestry]</a> |
| 747 | } |
| 748 | tag_private_status(frid); |
| 749 | /* End timelineDetail */ |
| 750 | if( tmFlags & TIMELINE_COMPACT ){ |
| 751 |