Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | The uf=HASH query parameter on /timeline shows all checkins that use the identified file unless there is also an n=COUNT query parameter. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
dffcebea147aa88890d6b9dbfa3f7d61 |
| User & Date: | drh 2020-12-31 13:26:10.912 |
Context
|
2020-12-31
| ||
| 14:06 | The n1=COUNT query parameter on /timeline is a one-time count that does not affect the display preferences cookie. ... (check-in: cd892ac335 user: drh tags: trunk) | |
| 13:26 | The uf=HASH query parameter on /timeline shows all checkins that use the identified file unless there is also an n=COUNT query parameter. ... (check-in: dffcebea14 user: drh tags: trunk) | |
| 01:31 | On the homepage, mention that multiple projects can be run using a Fossil server running on an inexpensive VPS or Raspberry Pi. ... (check-in: 6373e363cb user: drh tags: trunk) | |
Changes
Changes to src/finfo.c.
| ︙ | ︙ | |||
703 704 705 706 707 708 709 |
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>
| | | 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 |
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?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>
}
|
| ︙ | ︙ |
Changes to src/info.c.
| ︙ | ︙ | |||
1456 1457 1458 1459 1460 1461 1462 |
hyperlink_to_user(zUser,zDate,",");
@ size: %d(szFile))
if( g.perm.Hyperlink ){
@ %z(href("%R/annotate?filename=%T&checkin=%!S",zName,zVers))
@ [annotate]</a>
@ %z(href("%R/blame?filename=%T&checkin=%!S",zName,zVers))
@ [blame]</a>
| | | 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 |
hyperlink_to_user(zUser,zDate,",");
@ size: %d(szFile))
if( g.perm.Hyperlink ){
@ %z(href("%R/annotate?filename=%T&checkin=%!S",zName,zVers))
@ [annotate]</a>
@ %z(href("%R/blame?filename=%T&checkin=%!S",zName,zVers))
@ [blame]</a>
@ %z(href("%R/timeline?uf=%!S",zUuid))[check-ins using]</a>
if( fileedit_is_editable(zName) ){
@ %z(href("%R/fileedit?filename=%T&checkin=%!S",zName,zVers))[edit]</a>
}
}
cnt++;
if( pDownloadName && blob_size(pDownloadName)==0 ){
blob_append(pDownloadName, zName, -1);
|
| ︙ | ︙ | |||
2435 2436 2437 2438 2439 2440 2441 |
const char *zIp = db_column_text(&q,2);
@ <p>Received on %s(zDate) from %h(zUser) at %h(zIp).</p>
}
db_finalize(&q);
}
style_submenu_element("Download", "%R/raw/%s?at=%T", zUuid, file_tail(zName));
if( db_exists("SELECT 1 FROM mlink WHERE fid=%d", rid) ){
| | | 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 |
const char *zIp = db_column_text(&q,2);
@ <p>Received on %s(zDate) from %h(zUser) at %h(zIp).</p>
}
db_finalize(&q);
}
style_submenu_element("Download", "%R/raw/%s?at=%T", zUuid, file_tail(zName));
if( db_exists("SELECT 1 FROM mlink WHERE fid=%d", rid) ){
style_submenu_element("Check-ins Using", "%R/timeline?uf=%s", zUuid);
}
zMime = mimetype_from_name(blob_str(&downloadName));
if( zMime ){
if( fossil_strcmp(zMime, "text/html")==0 ){
if( asText ){
style_submenu_element("Html", "%s", url_render(&url, "txt", 0, 0, 0));
}else{
|
| ︙ | ︙ |
Changes to src/timeline.c.
| ︙ | ︙ | |||
1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 | ** a=TIMEORTAG Show events after TIMEORTAG ** b=TIMEORTAG Show events before TIMEORTAG ** c=TIMEORTAG Show events that happen "circa" TIMEORTAG ** cf=FILEHASH Show events around the time of the first use of ** the file with FILEHASH ** m=TIMEORTAG Highlight the event at TIMEORTAG ** n=COUNT Maximum number of events. "all" for no limit ** p=CHECKIN Parents and ancestors of CHECKIN ** bt=PRIOR ... going back to PRIOR ** d=CHECKIN Children and descendants of CHECKIN ** dp=CHECKIN The same as 'd=CHECKIN&p=CHECKIN' ** t=TAG Show only check-ins with the given TAG ** r=TAG Show check-ins related to TAG, equivalent to t=TAG&rel ** rel Show related check-ins as well as those matching t=TAG | > > | 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 | ** a=TIMEORTAG Show events after TIMEORTAG ** b=TIMEORTAG Show events before TIMEORTAG ** c=TIMEORTAG Show events that happen "circa" TIMEORTAG ** cf=FILEHASH Show events around the time of the first use of ** the file with FILEHASH ** m=TIMEORTAG Highlight the event at TIMEORTAG ** n=COUNT Maximum number of events. "all" for no limit ** n1=COUNT Same as "n" but does not set the user-preference cookie ** Use "n1=COUNT" for a one-time display ** p=CHECKIN Parents and ancestors of CHECKIN ** bt=PRIOR ... going back to PRIOR ** d=CHECKIN Children and descendants of CHECKIN ** dp=CHECKIN The same as 'd=CHECKIN&p=CHECKIN' ** t=TAG Show only check-ins with the given TAG ** r=TAG Show check-ins related to TAG, equivalent to t=TAG&rel ** rel Show related check-ins as well as those matching t=TAG |
| ︙ | ︙ | |||
1755 1756 1757 1758 1759 1760 1761 | int showCherrypicks = 1; /* True to show cherrypick merges */ int haveParameterN; /* True if n= query parameter present */ url_initialize(&url, "timeline"); cgi_query_parameters_to_url(&url); /* Set number of rows to display */ | > > | > > > > > > | | > | > > > | 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 |
int showCherrypicks = 1; /* True to show cherrypick merges */
int haveParameterN; /* True if n= query parameter present */
url_initialize(&url, "timeline");
cgi_query_parameters_to_url(&url);
/* Set number of rows to display */
z = P("n");
if( z!=0 ){
haveParameterN = 1;
}else{
z = P("n1");
if( z ){
haveParameterN = 1;
}else{
haveParameterN = 0;
cookie_read_parameter("n","n");
z = P("n");
if( z==0 ){
z = db_get("timeline-default-length",0);
}
}
}
if( z ){
if( fossil_strcmp(z,"all")==0 ){
nEntry = 0;
}else{
nEntry = atoi(z);
if( nEntry<=0 ){
z = "10";
|
| ︙ | ︙ | |||
1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 |
int ufid = db_int(0, "SELECT rid FROM blob WHERE uuid GLOB '%q*'", zUses);
if( ufid ){
zUses = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", ufid);
db_multi_exec("CREATE TEMP TABLE usesfile(rid INTEGER PRIMARY KEY)");
compute_uses_file("usesfile", ufid, 0);
zType = "ci";
disableY = 1;
}else{
zUses = 0;
}
}
if( renameOnly ){
db_multi_exec(
"CREATE TEMP TABLE rnfile(rid INTEGER PRIMARY KEY);"
| > | 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 |
int ufid = db_int(0, "SELECT rid FROM blob WHERE uuid GLOB '%q*'", zUses);
if( ufid ){
zUses = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", ufid);
db_multi_exec("CREATE TEMP TABLE usesfile(rid INTEGER PRIMARY KEY)");
compute_uses_file("usesfile", ufid, 0);
zType = "ci";
disableY = 1;
if( !haveParameterN ) nEntry = 0;
}else{
zUses = 0;
}
}
if( renameOnly ){
db_multi_exec(
"CREATE TEMP TABLE rnfile(rid INTEGER PRIMARY KEY);"
|
| ︙ | ︙ |