Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Add the "df=CHECKIN" query parameter to /timeline. "df" is shorthand for "Derived From". "df=CHECKIN" is equivalent to "d=CHECKIN&n1=all&nd". Update hyperlinks in documentation to use df= and/or n1=. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
78819fdb0dc0c7eb0776254e84dfd99c |
| User & Date: | drh 2020-12-31 14:35:45.897 |
Context
|
2021-01-01
| ||
| 22:07 | Update the built-in SQLite to the latest 3.35.0 alpha which features faster startup time. check-in: 67d79d23e1 user: drh tags: trunk | |
|
2020-12-31
| ||
| 14:35 | Add the "df=CHECKIN" query parameter to /timeline. "df" is shorthand for "Derived From". "df=CHECKIN" is equivalent to "d=CHECKIN&n1=all&nd". Update hyperlinks in documentation to use df= and/or n1=. check-in: 78819fdb0d user: drh tags: trunk | |
| 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 | |
Changes
Changes to src/timeline.c.
| ︙ | ︙ | |||
1639 1640 1641 1642 1643 1644 1645 | ** m=TIMEORTAG Highlight the event at TIMEORTAG ** n=COUNT Maximum number of events. "all" for no limit ** n1=COUNT Same as "n" but doesn't set the display-preference cookie ** Use "n1=COUNT" for a one-time display change ** p=CHECKIN Parents and ancestors of CHECKIN ** bt=PRIOR ... going back to PRIOR ** d=CHECKIN Children and descendants of CHECKIN | | > > > > > | 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 | ** m=TIMEORTAG Highlight the event at TIMEORTAG ** n=COUNT Maximum number of events. "all" for no limit ** n1=COUNT Same as "n" but doesn't set the display-preference cookie ** Use "n1=COUNT" for a one-time display change ** p=CHECKIN Parents and ancestors of CHECKIN ** bt=PRIOR ... going back to PRIOR ** d=CHECKIN Children and descendants of CHECKIN ** dp=CHECKIN Same as 'd=CHECKIN&p=CHECKIN' ** df=CHECKIN Same as 'd=CHECKIN&n1=all&nd'. Mnemonic: "Derived From" ** bt=CHECKIN In conjuction with p=CX, this means show all ** ancestors of CX going back to the time of CHECKIN. ** All qualifying check-ins are shown unless there ** is also an n= or n1= query pararameter. ** 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 ** mionly Limit rel to show ancestors but not descendants ** nowiki Do not show wiki associated with branch or tag ** ms=MATCHSTYLE Set tag match style to EXACT, GLOB, LIKE, REGEXP ** u=USER Only show items associated with USER |
| ︙ | ︙ | |||
1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 | ** vfx Show complete text of forum messages ** f=CHECKIN Show family (immediate parents and children) of CHECKIN ** from=CHECKIN Path from... ** to=CHECKIN ... to this ** shortest ... show only the shortest path ** rel ... also show related checkins ** uf=FILE_HASH Show only check-ins that contain the given file version ** chng=GLOBLIST Show only check-ins that involve changes to a file whose ** name matches one of the comma-separate GLOBLIST ** brbg Background color determined by branch name ** ubg Background color determined by user ** deltabg Background color red for delta manifests or green ** for baseline manifests ** namechng Show only check-ins that have filename changes | > > | 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 | ** vfx Show complete text of forum messages ** f=CHECKIN Show family (immediate parents and children) of CHECKIN ** from=CHECKIN Path from... ** to=CHECKIN ... to this ** shortest ... show only the shortest path ** rel ... also show related checkins ** uf=FILE_HASH Show only check-ins that contain the given file version ** All qualifying check-ins are shown unless there is ** also an n= or n1= query parameter. ** chng=GLOBLIST Show only check-ins that involve changes to a file whose ** name matches one of the comma-separate GLOBLIST ** brbg Background color determined by branch name ** ubg Background color determined by user ** deltabg Background color red for delta manifests or green ** for baseline manifests ** namechng Show only check-ins that have filename changes |
| ︙ | ︙ | |||
1697 1698 1699 1700 1701 1702 1703 |
** name of a branch.
*/
void page_timeline(void){
Stmt q; /* Query used to generate the timeline */
Blob sql; /* text of SQL used to generate timeline */
Blob desc; /* Description of the timeline */
int nEntry; /* Max number of entries on timeline */
| | | | | 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 |
** name of a branch.
*/
void page_timeline(void){
Stmt q; /* Query used to generate the timeline */
Blob sql; /* text of SQL used to generate timeline */
Blob desc; /* Description of the timeline */
int nEntry; /* Max number of entries on timeline */
int p_rid; /* artifact p and its parents */
int d_rid; /* artifact d and descendants */
int f_rid; /* artifact f and close family */
const char *zUser = P("u"); /* All entries by this user if not NULL */
const char *zType; /* Type of events to display */
const char *zAfter = P("a"); /* Events after this time */
const char *zBefore = P("b"); /* Events before this time */
const char *zCirca = P("c"); /* Events near this time */
const char *zMark = P("m"); /* Mark this event or an event this time */
const char *zTagName = P("t"); /* Show events with this tag */
|
| ︙ | ︙ | |||
1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 |
int advancedMenu = 0; /* Use the advanced menu design */
char *zPlural; /* Ending for plural forms */
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;
cookie_write_parameter("n","n",0);
}else{
const char *z2;
haveParameterN = 0;
cookie_read_parameter("n","n");
z = P("n");
if( z==0 ){
z = db_get("timeline-default-length",0);
}
| > | > > > > | > > > > > > > | > > | 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 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 |
int advancedMenu = 0; /* Use the advanced menu design */
char *zPlural; /* Ending for plural forms */
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;
cookie_write_parameter("n","n",0);
}else{
const char *z2;
haveParameterN = 0;
cookie_read_parameter("n","n");
z = P("n");
if( z==0 ){
z = db_get("timeline-default-length",0);
}
cgi_replace_query_parameter("n",fossil_strdup(z));
cookie_write_parameter("n","n",0);
z2 = P("n1");
if( z2 ){
haveParameterN = 2;
z = z2;
}
}
if( z ){
if( fossil_strcmp(z,"all")==0 ){
nEntry = 0;
}else{
nEntry = atoi(z);
if( nEntry<=0 ){
z = "10";
nEntry = 10;
}
}
}else{
nEntry = 50;
}
/* Query parameters d=, p=, and f= and variants */
z = P("p");
p_rid = z ? name_to_typed_rid(z,"ci") : 0;
z = P("d");
d_rid = z ? name_to_typed_rid(z,"ci") : 0;
z = P("f");
f_rid = z ? name_to_typed_rid(z,"ci") : 0;
z = P("df");
if( z && (d_rid = name_to_typed_rid(z,"ci"))!=0 ){
nEntry = 0;
useDividers = 0;
cgi_replace_query_parameter("d",fossil_strdup(z));
}
/* Undocumented query parameter to set JS mode */
builtin_set_js_delivery_mode(P("jsmode"),1);
secondaryRid = name_to_typed_rid(P("sel2"),"ci");
selectedRid = name_to_typed_rid(P("sel1"),"ci");
tmFlags |= timeline_ss_submenu();
|
| ︙ | ︙ |
Changes to www/fossil-v-git.wiki.
| ︙ | ︙ | |||
256 257 258 259 260 261 262 | by following the pointers embedded in the check-in object, but it is difficult to go the other direction and locate the descendants of a check-in. It is so difficult, in fact, that neither native Git nor GitHub provide this capability short of crawling the [https://www.git-scm.com/docs/git-log|commit log]. With Fossil, on the other hand, finding descendents is a simple SQL query. It is common in Fossil to ask to see | | | 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 | by following the pointers embedded in the check-in object, but it is difficult to go the other direction and locate the descendants of a check-in. It is so difficult, in fact, that neither native Git nor GitHub provide this capability short of crawling the [https://www.git-scm.com/docs/git-log|commit log]. With Fossil, on the other hand, finding descendents is a simple SQL query. It is common in Fossil to ask to see [/timeline?df=release&y=ci|all check-ins since the last release]. Git lets you see "what came before". Fossil makes it just as easy to also see "what came after". Leaf check-ins in Git that lack a "ref" become "detached," making them difficult to locate and subject to garbage collection. This [http://gitfaq.org/articles/what-is-a-detached-head.html|detached head state] problem has caused grief for |
| ︙ | ︙ |
Changes to www/history.md.
1 2 3 4 5 6 7 | # The History And Purpose Of Fossil Fossil is a [distributed version control system (DVCS)][100] written beginning in [2007][105] by the [architect of SQLite][110] for the purpose of managing the [SQLite project][115]. [100]: https://en.wikipedia.org/wiki/Distributed_version_control | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # The History And Purpose Of Fossil Fossil is a [distributed version control system (DVCS)][100] written beginning in [2007][105] by the [architect of SQLite][110] for the purpose of managing the [SQLite project][115]. [100]: https://en.wikipedia.org/wiki/Distributed_version_control [105]: /timeline?a=1970-01-01&n1=10 [110]: https://sqlite.org/crew.html [115]: https://sqlite.org/ Though Fossil was originally written specifically to support SQLite, it is now also used by countless other projects. The SQLite architect (drh) is still the top committer to Fossil, but there are also [many other contributors][120]. |
| ︙ | ︙ | |||
28 29 30 31 32 33 34 | Though innovative and much loved in its time, CVS was not without problems. Among those was a lack of visibility into the project history and the lack of integrated bug tracking. To try to address these deficiencies, the SQLite author developed the [CVSTrac][305] wrapper for CVS beginning in [2002][310]. [305]: http://cvstrac.org/ | | | | | 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | Though innovative and much loved in its time, CVS was not without problems. Among those was a lack of visibility into the project history and the lack of integrated bug tracking. To try to address these deficiencies, the SQLite author developed the [CVSTrac][305] wrapper for CVS beginning in [2002][310]. [305]: http://cvstrac.org/ [310]: http://cvstrac.org/fossil/timeline?a=19700101&n1=10 CVSTrac greatly improved the usability of CVS and was adopted by other projects. CVSTrac also [inspired the design][315] of [Trac][320], which was a similar system that was (and is) far more widely used. [315]: https://trac.edgewall.org/wiki/TracHistory [320]: https://trac.edgewall.org/ Historians can see the influence of CVSTrac on the development of SQLite. [Early SQLite check-ins][325] that happened before CVSTrac often had a check-in comment that was just a "smiley". That was not an unreasonable check-in comment, as check-in comments were scarcely seen and of questionable utility in raw CVS. CVSTrac changed that, making check-in comments more visible and more useful. The SQLite developers reacted by creating [better check-in comments][330]. [325]: https://sqlite.org/src/timeline?a=19700101&n1=10 [330]: https://sqlite.org/src/timeline?c=20030101&n1=10&nd At about this same time, the [Monotone][335] system appeared. Monotone was one of the first distributed version control systems. As far as this author is aware, Monotone was the first VCS to make use of SHA1 to identify artifacts. Monotone stored its content in an SQLite database, which is what brought it to the attention of the SQLite architect. These design choices were a major source of inspiration for Fossil. |
| ︙ | ︙ | |||
76 77 78 79 80 81 82 | however, it was found that the low-level byte manipulates needed for things like delta compression and computing diffs were better implemented in plain old C. Experiments continued. Finally, a prototype capable of self-hosting was devised on [2007-07-16][345]. [340]: https://www.tcl.tk/ | | | | | 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | however, it was found that the low-level byte manipulates needed for things like delta compression and computing diffs were better implemented in plain old C. Experiments continued. Finally, a prototype capable of self-hosting was devised on [2007-07-16][345]. [340]: https://www.tcl.tk/ [345]: https://fossil-scm.org/fossil/timeline?c=200707211410&n1=10 The first project hosted by Fossil was Fossil itself. After a few months of development work, the code was considered stable enough to begin hosting the [SQLite documentation repository][350] which was split off from the main SQLite CVS repository on [2007-11-12][355]. After two years of development work on Fossil, the SQLite source code itself was transfered to Fossil on [2009-08-11][360]. [350]: https://www.sqlite.org/docsrc/doc/trunk/README.md [355]: https://www.sqlite.org/docsrc/timeline?c=200711120345&n1=10 [360]: https://sqlite.org/src/timeline?c=b0848925babde524&n1=12&y=ci |
Changes to www/index.wiki.
| ︙ | ︙ | |||
88 89 90 91 92 93 94 | 8. <b>Free and Open-Source</b> - Uses the [../COPYRIGHT-BSD2.txt|2-clause BSD license]. <hr> <h3>Latest Release: 2.13 ([/timeline?c=version-2.13|2020-11-01])</h3> * [/uv/download.html|Download] * [./changes.wiki#v2_13|Change Summary] | | | | 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
8. <b>Free and Open-Source</b> - Uses the [../COPYRIGHT-BSD2.txt|2-clause BSD license].
<hr>
<h3>Latest Release: 2.13 ([/timeline?c=version-2.13|2020-11-01])</h3>
* [/uv/download.html|Download]
* [./changes.wiki#v2_13|Change Summary]
* [/timeline?p=version-2.13&bt=version-2.12&y=ci|Check-ins in version 2.13]
* [/timeline?df=version-2.13&y=ci|Check-ins derived from the 2.13 release]
* [/timeline?t=release|Timeline of all past releases]
<hr>
<h3>Quick Start</h3>
1. [/uv/download.html|Download] or install using a package manager or
[./build.wiki|compile from sources].
|
| ︙ | ︙ |
Changes to www/serverext.wiki.
| ︙ | ︙ | |||
84 85 86 87 88 89 90 | The /sqlite-src-ext/checklist file is a [https://wapp.tcl.tk|Wapp program]. The current source code to the this program can be seen at [https://www.sqlite.org/src/ext/checklist/3070700/self] and recent historical versions are available at [https://sqlite.org/docsrc/finfo/misc/checklist.tcl] with | | | 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | The /sqlite-src-ext/checklist file is a [https://wapp.tcl.tk|Wapp program]. The current source code to the this program can be seen at [https://www.sqlite.org/src/ext/checklist/3070700/self] and recent historical versions are available at [https://sqlite.org/docsrc/finfo/misc/checklist.tcl] with older legacy at [https://sqlite.org/checklistapp/timeline?n1=all] There is a cascade of CGIs happening here. The web server that receives the initial HTTP request runs Fossil as a CGI based on the "https://sqlite.org/src" portion of the URL. The Fossil instance then runs the checklist sub-CGI based on the "/ext/checklists" suffix. The output of the sub-CGI is read by Fossil and then relayed on to the main web server which in turn relays the result back to the original client. |
| ︙ | ︙ |
Changes to www/uitest.html.
| ︙ | ︙ | |||
10 11 12 13 14 15 16 |
//////////////////////////////////////////////////////////////////////////
{
url: "timeline",
desc:
"Simple timeline of most recent check-ins. Verify that all submenus work."
},
{
| | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
//////////////////////////////////////////////////////////////////////////
{
url: "timeline",
desc:
"Simple timeline of most recent check-ins. Verify that all submenus work."
},
{
url: "timeline?n1=125",
desc:
"Timeline with 125 entries. Verify that submenus preserve the entry count."
},
{
url: "wiki",
desc:
"The wiki homepage"
|
| ︙ | ︙ |
Changes to www/webpage-ex.md.
1 2 3 4 5 6 7 8 | Web-Page Examples ================= Here are just a few examples of the many web pages supported by Fossil. Follow hyperlinks on the examples below to see many other examples. * <a target='_blank' class='exbtn' | | | | > > > > | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
Web-Page Examples
=================
Here are just a few examples of the many web pages supported
by Fossil. Follow hyperlinks on the examples below to see many
other examples.
* <a target='_blank' class='exbtn'
href='$ROOT/timeline?y=ci&n1=100'>(Example)</a> →
100 most recent check-ins.
* <a target='_blank' class='exbtn'
href='$ROOT/finfo?name=src/file.c'>(Example)</a> →
All changes to the <b>src/file.c</b> source file.
* <a target='_blank' class='exbtn'
href='$ROOT/timeline?n1=200&uf=0c3c2d086a'>(Example)</a> →
All check-ins using a particular version of the <b>src/file.c</b>
source file.
* <a target='_blank' class='exbtn'
href='$ROOT/timeline?n1=11&y=ci&c=2014-01-01'>(Example)</a> →
Check-ins proximate to an historical point in time (2014-01-01).
* <a target='_blank' class='exbtn'
href='$ROOT/timeline?df=release&y=ci'>(Example)</a> →
All check-ins derived from the most recent release.
* <a target='_blank' class='exbtn'
href='$ROOT/timeline?n1=11&y=ci&c=2014-01-01&v=1'>(Example)</a> →
The previous example augmented with file changes.
* <a target='_blank' class='exbtn'
href='$ROOT/timeline?n1=25&y=ci&a=1970-01-01'>(Example)</a> →
First 25 check-ins after 1970-01-01. (The first 25 check-ins of
the project.)
* <a target='_blank' class='exbtn'
href='$ROOT/timeline?n1=200&r=svn-import'>(Example)</a> →
All check-ins of the "svn-import" branch together with check-ins
that merge with that branch.
* <a target='_blank' class='exbtn'
href='$ROOT/timeline?n1=200&t=svn-import'>(Example)</a> →
All check-ins of the "svn-import" branch only.
* <a target='_blank' class='exbtn'
href='$ROOT/timeline?n1=100&y=ci&ubg'>(Example)</a> →
100 most recent check-ins color coded by committer rather than by branch.
* <a target='_blank' class='exbtn'
href='$ROOT/timeline?from=version-1.27&to=version-1.28'>(Example)</a> →
All check-ins on the most direct path from
version-1.27 to version-1.28
|
| ︙ | ︙ |