Fossil SCM
Add hyperlinks to the branch diff page from branch timeline and from /info.
Commit
833b220adc20fe57dd301adca264c7bb21d5b44f5b17c79540dc2bdab6011c67
Parent
69adb45da0b8fc3…
2 files changed
+7
-6
+7
-5
+7
-6
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -665,10 +665,11 @@ | ||
| 665 | 665 | const char *zRe; /* regex parameter */ |
| 666 | 666 | ReCompiled *pRe = 0; /* regex */ |
| 667 | 667 | const char *zW; /* URL param for ignoring whitespace */ |
| 668 | 668 | const char *zPage = "vinfo"; /* Page that shows diffs */ |
| 669 | 669 | const char *zPageHide = "ci"; /* Page that hides diffs */ |
| 670 | + const char *zBrName; /* Branch name */ | |
| 670 | 671 | |
| 671 | 672 | login_check_credentials(); |
| 672 | 673 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| 673 | 674 | zName = P("name"); |
| 674 | 675 | rid = name_to_rid_www("name"); |
| @@ -693,10 +694,11 @@ | ||
| 693 | 694 | " FROM blob, event" |
| 694 | 695 | " WHERE blob.rid=%d" |
| 695 | 696 | " AND event.objid=%d", |
| 696 | 697 | rid, rid |
| 697 | 698 | ); |
| 699 | + zBrName = branch_of_rid(rid); | |
| 698 | 700 | |
| 699 | 701 | cookie_link_parameter("diff","diff","2"); |
| 700 | 702 | diffType = atoi(PD("diff","2")); |
| 701 | 703 | if( db_step(&q1)==SQLITE_ROW ){ |
| 702 | 704 | const char *zUuid = db_column_text(&q1, 0); |
| @@ -705,11 +707,10 @@ | ||
| 705 | 707 | const char *zUser; |
| 706 | 708 | const char *zOrigUser; |
| 707 | 709 | const char *zComment; |
| 708 | 710 | const char *zDate; |
| 709 | 711 | const char *zOrigDate; |
| 710 | - const char *zBrName; | |
| 711 | 712 | int okWiki = 0; |
| 712 | 713 | Blob wiki_read_links = BLOB_INITIALIZER; |
| 713 | 714 | Blob wiki_add_links = BLOB_INITIALIZER; |
| 714 | 715 | |
| 715 | 716 | style_header("Check-in [%S]", zUuid); |
| @@ -719,13 +720,10 @@ | ||
| 719 | 720 | " WHERE tagid=%d AND rid=%d AND tagtype>0", |
| 720 | 721 | TAG_USER, rid); |
| 721 | 722 | zEComment = db_text(0, |
| 722 | 723 | "SELECT value FROM tagxref WHERE tagid=%d AND rid=%d", |
| 723 | 724 | TAG_COMMENT, rid); |
| 724 | - zBrName = db_text(0, | |
| 725 | - "SELECT value FROM tagxref WHERE tagid=%d AND rid=%d", | |
| 726 | - TAG_BRANCH, rid); | |
| 727 | 725 | zOrigUser = db_column_text(&q1, 2); |
| 728 | 726 | zUser = zEUser ? zEUser : zOrigUser; |
| 729 | 727 | zComment = db_column_text(&q1, 3); |
| 730 | 728 | zDate = db_column_text(&q1,1); |
| 731 | 729 | zOrigDate = db_column_text(&q1, 4); |
| @@ -886,11 +884,14 @@ | ||
| 886 | 884 | } |
| 887 | 885 | |
| 888 | 886 | if( g.perm.Hyperlink ){ |
| 889 | 887 | @ <tr><th>Other Links:</th> |
| 890 | 888 | @ <td> |
| 891 | - @ %z(href("%R/artifact/%!S",zUuid))manifest</a> | |
| 889 | + if( fossil_strcmp(zBrName, db_get("main-branch","trunk"))!=0 ){ | |
| 890 | + @ %z(href("%R/vdiff?branch=%!S", zUuid))branch diff</a> | | |
| 891 | + } | |
| 892 | + @ %z(href("%R/artifact/%!S",zUuid))manifest</a> | |
| 892 | 893 | @ | %z(href("%R/ci_tags/%!S",zUuid))tags</a> |
| 893 | 894 | if( g.perm.Admin ){ |
| 894 | 895 | @ | %z(href("%R/mlink?ci=%!S",zUuid))mlink table</a> |
| 895 | 896 | } |
| 896 | 897 | if( g.anon.Write ){ |
| @@ -1286,11 +1287,11 @@ | ||
| 1286 | 1287 | char *zRealBranch = branch_of_rid(ridTo); |
| 1287 | 1288 | char *zToUuid = rid_to_uuid(ridTo); |
| 1288 | 1289 | char *zFromUuid = rid_to_uuid(ridFrom); |
| 1289 | 1290 | @ <h2>Changes In Branch \ |
| 1290 | 1291 | @ %z(href("%R/timeline?r=%T",zRealBranch))%h(zRealBranch)</a> |
| 1291 | - if( strcmp(zRealBranch,zBranch)!=0 ){ | |
| 1292 | + if( ridTo != symbolic_name_to_rid(zRealBranch,"ci") ){ | |
| 1292 | 1293 | @ Through %z(href("%R/info/%!S",zToUuid))[%S(zToUuid)]</a> |
| 1293 | 1294 | } |
| 1294 | 1295 | @ Excluding Merge-Ins</h2> |
| 1295 | 1296 | @ <p>This is equivalent to a diff from |
| 1296 | 1297 | @ <span class='timelineSelected'>\ |
| 1297 | 1298 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -665,10 +665,11 @@ | |
| 665 | const char *zRe; /* regex parameter */ |
| 666 | ReCompiled *pRe = 0; /* regex */ |
| 667 | const char *zW; /* URL param for ignoring whitespace */ |
| 668 | const char *zPage = "vinfo"; /* Page that shows diffs */ |
| 669 | const char *zPageHide = "ci"; /* Page that hides diffs */ |
| 670 | |
| 671 | login_check_credentials(); |
| 672 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| 673 | zName = P("name"); |
| 674 | rid = name_to_rid_www("name"); |
| @@ -693,10 +694,11 @@ | |
| 693 | " FROM blob, event" |
| 694 | " WHERE blob.rid=%d" |
| 695 | " AND event.objid=%d", |
| 696 | rid, rid |
| 697 | ); |
| 698 | |
| 699 | cookie_link_parameter("diff","diff","2"); |
| 700 | diffType = atoi(PD("diff","2")); |
| 701 | if( db_step(&q1)==SQLITE_ROW ){ |
| 702 | const char *zUuid = db_column_text(&q1, 0); |
| @@ -705,11 +707,10 @@ | |
| 705 | const char *zUser; |
| 706 | const char *zOrigUser; |
| 707 | const char *zComment; |
| 708 | const char *zDate; |
| 709 | const char *zOrigDate; |
| 710 | const char *zBrName; |
| 711 | int okWiki = 0; |
| 712 | Blob wiki_read_links = BLOB_INITIALIZER; |
| 713 | Blob wiki_add_links = BLOB_INITIALIZER; |
| 714 | |
| 715 | style_header("Check-in [%S]", zUuid); |
| @@ -719,13 +720,10 @@ | |
| 719 | " WHERE tagid=%d AND rid=%d AND tagtype>0", |
| 720 | TAG_USER, rid); |
| 721 | zEComment = db_text(0, |
| 722 | "SELECT value FROM tagxref WHERE tagid=%d AND rid=%d", |
| 723 | TAG_COMMENT, rid); |
| 724 | zBrName = db_text(0, |
| 725 | "SELECT value FROM tagxref WHERE tagid=%d AND rid=%d", |
| 726 | TAG_BRANCH, rid); |
| 727 | zOrigUser = db_column_text(&q1, 2); |
| 728 | zUser = zEUser ? zEUser : zOrigUser; |
| 729 | zComment = db_column_text(&q1, 3); |
| 730 | zDate = db_column_text(&q1,1); |
| 731 | zOrigDate = db_column_text(&q1, 4); |
| @@ -886,11 +884,14 @@ | |
| 886 | } |
| 887 | |
| 888 | if( g.perm.Hyperlink ){ |
| 889 | @ <tr><th>Other Links:</th> |
| 890 | @ <td> |
| 891 | @ %z(href("%R/artifact/%!S",zUuid))manifest</a> |
| 892 | @ | %z(href("%R/ci_tags/%!S",zUuid))tags</a> |
| 893 | if( g.perm.Admin ){ |
| 894 | @ | %z(href("%R/mlink?ci=%!S",zUuid))mlink table</a> |
| 895 | } |
| 896 | if( g.anon.Write ){ |
| @@ -1286,11 +1287,11 @@ | |
| 1286 | char *zRealBranch = branch_of_rid(ridTo); |
| 1287 | char *zToUuid = rid_to_uuid(ridTo); |
| 1288 | char *zFromUuid = rid_to_uuid(ridFrom); |
| 1289 | @ <h2>Changes In Branch \ |
| 1290 | @ %z(href("%R/timeline?r=%T",zRealBranch))%h(zRealBranch)</a> |
| 1291 | if( strcmp(zRealBranch,zBranch)!=0 ){ |
| 1292 | @ Through %z(href("%R/info/%!S",zToUuid))[%S(zToUuid)]</a> |
| 1293 | } |
| 1294 | @ Excluding Merge-Ins</h2> |
| 1295 | @ <p>This is equivalent to a diff from |
| 1296 | @ <span class='timelineSelected'>\ |
| 1297 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -665,10 +665,11 @@ | |
| 665 | const char *zRe; /* regex parameter */ |
| 666 | ReCompiled *pRe = 0; /* regex */ |
| 667 | const char *zW; /* URL param for ignoring whitespace */ |
| 668 | const char *zPage = "vinfo"; /* Page that shows diffs */ |
| 669 | const char *zPageHide = "ci"; /* Page that hides diffs */ |
| 670 | const char *zBrName; /* Branch name */ |
| 671 | |
| 672 | login_check_credentials(); |
| 673 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| 674 | zName = P("name"); |
| 675 | rid = name_to_rid_www("name"); |
| @@ -693,10 +694,11 @@ | |
| 694 | " FROM blob, event" |
| 695 | " WHERE blob.rid=%d" |
| 696 | " AND event.objid=%d", |
| 697 | rid, rid |
| 698 | ); |
| 699 | zBrName = branch_of_rid(rid); |
| 700 | |
| 701 | cookie_link_parameter("diff","diff","2"); |
| 702 | diffType = atoi(PD("diff","2")); |
| 703 | if( db_step(&q1)==SQLITE_ROW ){ |
| 704 | const char *zUuid = db_column_text(&q1, 0); |
| @@ -705,11 +707,10 @@ | |
| 707 | const char *zUser; |
| 708 | const char *zOrigUser; |
| 709 | const char *zComment; |
| 710 | const char *zDate; |
| 711 | const char *zOrigDate; |
| 712 | int okWiki = 0; |
| 713 | Blob wiki_read_links = BLOB_INITIALIZER; |
| 714 | Blob wiki_add_links = BLOB_INITIALIZER; |
| 715 | |
| 716 | style_header("Check-in [%S]", zUuid); |
| @@ -719,13 +720,10 @@ | |
| 720 | " WHERE tagid=%d AND rid=%d AND tagtype>0", |
| 721 | TAG_USER, rid); |
| 722 | zEComment = db_text(0, |
| 723 | "SELECT value FROM tagxref WHERE tagid=%d AND rid=%d", |
| 724 | TAG_COMMENT, rid); |
| 725 | zOrigUser = db_column_text(&q1, 2); |
| 726 | zUser = zEUser ? zEUser : zOrigUser; |
| 727 | zComment = db_column_text(&q1, 3); |
| 728 | zDate = db_column_text(&q1,1); |
| 729 | zOrigDate = db_column_text(&q1, 4); |
| @@ -886,11 +884,14 @@ | |
| 884 | } |
| 885 | |
| 886 | if( g.perm.Hyperlink ){ |
| 887 | @ <tr><th>Other Links:</th> |
| 888 | @ <td> |
| 889 | if( fossil_strcmp(zBrName, db_get("main-branch","trunk"))!=0 ){ |
| 890 | @ %z(href("%R/vdiff?branch=%!S", zUuid))branch diff</a> | |
| 891 | } |
| 892 | @ %z(href("%R/artifact/%!S",zUuid))manifest</a> |
| 893 | @ | %z(href("%R/ci_tags/%!S",zUuid))tags</a> |
| 894 | if( g.perm.Admin ){ |
| 895 | @ | %z(href("%R/mlink?ci=%!S",zUuid))mlink table</a> |
| 896 | } |
| 897 | if( g.anon.Write ){ |
| @@ -1286,11 +1287,11 @@ | |
| 1287 | char *zRealBranch = branch_of_rid(ridTo); |
| 1288 | char *zToUuid = rid_to_uuid(ridTo); |
| 1289 | char *zFromUuid = rid_to_uuid(ridFrom); |
| 1290 | @ <h2>Changes In Branch \ |
| 1291 | @ %z(href("%R/timeline?r=%T",zRealBranch))%h(zRealBranch)</a> |
| 1292 | if( ridTo != symbolic_name_to_rid(zRealBranch,"ci") ){ |
| 1293 | @ Through %z(href("%R/info/%!S",zToUuid))[%S(zToUuid)]</a> |
| 1294 | } |
| 1295 | @ Excluding Merge-Ins</h2> |
| 1296 | @ <p>This is equivalent to a diff from |
| 1297 | @ <span class='timelineSelected'>\ |
| 1298 |
+7
-5
| --- src/timeline.c | ||
| +++ src/timeline.c | ||
| @@ -2394,15 +2394,17 @@ | ||
| 2394 | 2394 | blob_zero(&sql); |
| 2395 | 2395 | db_prepare(&q, "SELECT * FROM timeline ORDER BY sortby DESC /*scan*/"); |
| 2396 | 2396 | if( fossil_islower(desc.aData[0]) ){ |
| 2397 | 2397 | desc.aData[0] = fossil_toupper(desc.aData[0]); |
| 2398 | 2398 | } |
| 2399 | - if( zBrName | |
| 2400 | - && !PB("nowiki") | |
| 2401 | - && wiki_render_associated("branch", zBrName, WIKIASSOC_ALL) | |
| 2402 | - ){ | |
| 2403 | - @ <div class="section">%b(&desc)</div> | |
| 2399 | + if( zBrName ){ | |
| 2400 | + if( !PB("nowiki") | |
| 2401 | + && wiki_render_associated("branch", zBrName, WIKIASSOC_ALL) | |
| 2402 | + ){ | |
| 2403 | + @ <div class="section">%b(&desc)</div> | |
| 2404 | + } | |
| 2405 | + style_submenu_element("Diff", "%R/vdiff?branch=%T", zBrName); | |
| 2404 | 2406 | }else |
| 2405 | 2407 | if( zTagName |
| 2406 | 2408 | && matchStyle==MS_EXACT |
| 2407 | 2409 | && zBrName==0 |
| 2408 | 2410 | && !PB("nowiki") |
| 2409 | 2411 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -2394,15 +2394,17 @@ | |
| 2394 | blob_zero(&sql); |
| 2395 | db_prepare(&q, "SELECT * FROM timeline ORDER BY sortby DESC /*scan*/"); |
| 2396 | if( fossil_islower(desc.aData[0]) ){ |
| 2397 | desc.aData[0] = fossil_toupper(desc.aData[0]); |
| 2398 | } |
| 2399 | if( zBrName |
| 2400 | && !PB("nowiki") |
| 2401 | && wiki_render_associated("branch", zBrName, WIKIASSOC_ALL) |
| 2402 | ){ |
| 2403 | @ <div class="section">%b(&desc)</div> |
| 2404 | }else |
| 2405 | if( zTagName |
| 2406 | && matchStyle==MS_EXACT |
| 2407 | && zBrName==0 |
| 2408 | && !PB("nowiki") |
| 2409 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -2394,15 +2394,17 @@ | |
| 2394 | blob_zero(&sql); |
| 2395 | db_prepare(&q, "SELECT * FROM timeline ORDER BY sortby DESC /*scan*/"); |
| 2396 | if( fossil_islower(desc.aData[0]) ){ |
| 2397 | desc.aData[0] = fossil_toupper(desc.aData[0]); |
| 2398 | } |
| 2399 | if( zBrName ){ |
| 2400 | if( !PB("nowiki") |
| 2401 | && wiki_render_associated("branch", zBrName, WIKIASSOC_ALL) |
| 2402 | ){ |
| 2403 | @ <div class="section">%b(&desc)</div> |
| 2404 | } |
| 2405 | style_submenu_element("Diff", "%R/vdiff?branch=%T", zBrName); |
| 2406 | }else |
| 2407 | if( zTagName |
| 2408 | && matchStyle==MS_EXACT |
| 2409 | && zBrName==0 |
| 2410 | && !PB("nowiki") |
| 2411 |