Fossil SCM

Remove the "tarzip" query parameter from /timeline. Make the default suggested-tarlist be "off" so that the /tarlist pages is disabled by default.

drh 2025-10-18 01:43 timeline-enhance-2025
Commit bdbf5db22224e287926955e600823d4b8467e587ec3515cc45b50d821a0a4017
+2 -2
--- src/setup.c
+++ src/setup.c
@@ -1441,15 +1441,15 @@
14411441
@ The example pattern above shows the union of the most recent trunk
14421442
@ check-in, the 5 most recent open leaf check-ins, and the 3 most
14431443
@ recent check-ins tagged with "release".
14441444
@ <p>
14451445
@ The /tarlist page is omitted from the <a href="%R/sitemap">/sitemap</a>
1446
- @ if the first token is "0". The default value is "1 trunk".
1446
+ @ if the first token is "0" or "off" or "no". The default value is "off".
14471447
@ (Property: suggested-tarlist)
14481448
@ <p>
14491449
textarea_attribute("Check-ins To Show On /tarlist", 2, 80,
1450
- "suggested-tarlist", "sgtrlst", "", 0);
1450
+ "suggested-tarlist", "sgtrlst", "off", 0);
14511451
@ <hr>
14521452
@ <p><input type="submit" name="submit" value="Apply Changes"></p>
14531453
@ </div></form>
14541454
db_end_transaction(0);
14551455
style_finish_page();
14561456
--- src/setup.c
+++ src/setup.c
@@ -1441,15 +1441,15 @@
1441 @ The example pattern above shows the union of the most recent trunk
1442 @ check-in, the 5 most recent open leaf check-ins, and the 3 most
1443 @ recent check-ins tagged with "release".
1444 @ <p>
1445 @ The /tarlist page is omitted from the <a href="%R/sitemap">/sitemap</a>
1446 @ if the first token is "0". The default value is "1 trunk".
1447 @ (Property: suggested-tarlist)
1448 @ <p>
1449 textarea_attribute("Check-ins To Show On /tarlist", 2, 80,
1450 "suggested-tarlist", "sgtrlst", "", 0);
1451 @ <hr>
1452 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
1453 @ </div></form>
1454 db_end_transaction(0);
1455 style_finish_page();
1456
--- src/setup.c
+++ src/setup.c
@@ -1441,15 +1441,15 @@
1441 @ The example pattern above shows the union of the most recent trunk
1442 @ check-in, the 5 most recent open leaf check-ins, and the 3 most
1443 @ recent check-ins tagged with "release".
1444 @ <p>
1445 @ The /tarlist page is omitted from the <a href="%R/sitemap">/sitemap</a>
1446 @ if the first token is "0" or "off" or "no". The default value is "off".
1447 @ (Property: suggested-tarlist)
1448 @ <p>
1449 textarea_attribute("Check-ins To Show On /tarlist", 2, 80,
1450 "suggested-tarlist", "sgtrlst", "off", 0);
1451 @ <hr>
1452 @ <p><input type="submit" name="submit" value="Apply Changes"></p>
1453 @ </div></form>
1454 db_end_transaction(0);
1455 style_finish_page();
1456
+1 -1
--- src/sitemap.c
+++ src/sitemap.c
@@ -133,11 +133,11 @@
133133
if( g.perm.Write && zEditGlob[0]!=0 ){
134134
@ <li>%z(href("%R/fileedit"))On-line File Editor</li>
135135
}
136136
@ </ul>
137137
}
138
- if( g.perm.Zip && db_get_boolean("suggested-tarlist",1)!=0 ){
138
+ if( g.perm.Zip && db_get_boolean("suggested-tarlist",0)!=0 ){
139139
@ <li>%z(href("%R/tarlist"))Tarballs and ZIPs</a>
140140
}
141141
if( g.perm.Read ){
142142
@ <li>%z(href("%R/timeline"))Project Timeline</a>
143143
@ <ul>
144144
--- src/sitemap.c
+++ src/sitemap.c
@@ -133,11 +133,11 @@
133 if( g.perm.Write && zEditGlob[0]!=0 ){
134 @ <li>%z(href("%R/fileedit"))On-line File Editor</li>
135 }
136 @ </ul>
137 }
138 if( g.perm.Zip && db_get_boolean("suggested-tarlist",1)!=0 ){
139 @ <li>%z(href("%R/tarlist"))Tarballs and ZIPs</a>
140 }
141 if( g.perm.Read ){
142 @ <li>%z(href("%R/timeline"))Project Timeline</a>
143 @ <ul>
144
--- src/sitemap.c
+++ src/sitemap.c
@@ -133,11 +133,11 @@
133 if( g.perm.Write && zEditGlob[0]!=0 ){
134 @ <li>%z(href("%R/fileedit"))On-line File Editor</li>
135 }
136 @ </ul>
137 }
138 if( g.perm.Zip && db_get_boolean("suggested-tarlist",0)!=0 ){
139 @ <li>%z(href("%R/tarlist"))Tarballs and ZIPs</a>
140 }
141 if( g.perm.Read ){
142 @ <li>%z(href("%R/timeline"))Project Timeline</a>
143 @ <ul>
144
+4 -10
--- src/tar.c
+++ src/tar.c
@@ -980,20 +980,13 @@
980980
if( zType[0]!='c' ){
981981
timeline_extra(pQuery, tmFlags, zThisUser, zThisTag);
982982
}else{
983983
int rid = db_column_int(pQuery, 0);
984984
const char *zUuid = db_column_text(pQuery, 1);
985
- const char *zDate = db_column_text(pQuery, 2);
986985
char *zBrName = branch_of_rid(rid);
987
- static const char *zProject = 0;
988
- int nProject;
989986
char *zNm;
990987
991
- if( zProject==0 ) zProject = db_get("project-name","unnamed");
992
- zNm = mprintf("%s-%sZ-%.8s", zProject, zDate, zUuid);
993
- nProject = (int)strlen(zProject);
994
- zNm[nProject+11] = 'T';
995988
if( tmFlags & TIMELINE_COLUMNAR ){
996989
@ <nobr>check-in:&nbsp;\
997990
@ %z(href("%R/info/%!S",zUuid))<span class='timelineHash'>\
998991
@ %S(zUuid)</span></a></nobr><br>
999992
if( fossil_strcmp(zBrName,"trunk")!=0 ){
@@ -1008,13 +1001,14 @@
10081001
if( (tmFlags & TIMELINE_GRAPH)==0 && fossil_strcmp(zBrName,"trunk")!=0 ){
10091002
@ branch:&nbsp;\
10101003
@ %z(href("%R/timeline?r=%t",zBrName))%h(zBrName)</a>
10111004
}
10121005
}
1013
- @ %z(href("%R/tarball/%!S/%t.tar.gz",zUuid,zNm))\
1006
+ zNm = archive_base_name(rid);
1007
+ @ %z(href("%R/tarball/%!S/%s.tar.gz",zUuid,zNm))\
10141008
@ <button>Tarball</button></a>
1015
- @ %z(href("%R/zip/%!S/%t.zip",zUuid,zNm))\
1009
+ @ %z(href("%R/zip/%!S/%s.zip",zUuid,zNm))\
10161010
@ <button>ZIP&nbsp;Archive</button></a>
10171011
fossil_free(zBrName);
10181012
fossil_free(zNm);
10191013
}
10201014
}
@@ -1060,11 +1054,11 @@
10601054
if( !g.perm.Zip ){ login_needed(g.anon.Zip); return; }
10611055
10621056
style_set_current_feature("timeline");
10631057
style_header("Suggested Tarballs And ZIP Archives");
10641058
1065
- zTarlistCfg = db_get("suggested-tarlist","1 trunk");
1059
+ zTarlistCfg = db_get("suggested-tarlist","off");
10661060
db_multi_exec(
10671061
"CREATE TEMP TABLE tarlist(rid INTEGER PRIMARY KEY);"
10681062
);
10691063
if( !g.interp ) Th_FossilInit(0);
10701064
Th_SplitList(g.interp, zTarlistCfg, (int)strlen(zTarlistCfg),
10711065
--- src/tar.c
+++ src/tar.c
@@ -980,20 +980,13 @@
980 if( zType[0]!='c' ){
981 timeline_extra(pQuery, tmFlags, zThisUser, zThisTag);
982 }else{
983 int rid = db_column_int(pQuery, 0);
984 const char *zUuid = db_column_text(pQuery, 1);
985 const char *zDate = db_column_text(pQuery, 2);
986 char *zBrName = branch_of_rid(rid);
987 static const char *zProject = 0;
988 int nProject;
989 char *zNm;
990
991 if( zProject==0 ) zProject = db_get("project-name","unnamed");
992 zNm = mprintf("%s-%sZ-%.8s", zProject, zDate, zUuid);
993 nProject = (int)strlen(zProject);
994 zNm[nProject+11] = 'T';
995 if( tmFlags & TIMELINE_COLUMNAR ){
996 @ <nobr>check-in:&nbsp;\
997 @ %z(href("%R/info/%!S",zUuid))<span class='timelineHash'>\
998 @ %S(zUuid)</span></a></nobr><br>
999 if( fossil_strcmp(zBrName,"trunk")!=0 ){
@@ -1008,13 +1001,14 @@
1008 if( (tmFlags & TIMELINE_GRAPH)==0 && fossil_strcmp(zBrName,"trunk")!=0 ){
1009 @ branch:&nbsp;\
1010 @ %z(href("%R/timeline?r=%t",zBrName))%h(zBrName)</a>
1011 }
1012 }
1013 @ %z(href("%R/tarball/%!S/%t.tar.gz",zUuid,zNm))\
 
1014 @ <button>Tarball</button></a>
1015 @ %z(href("%R/zip/%!S/%t.zip",zUuid,zNm))\
1016 @ <button>ZIP&nbsp;Archive</button></a>
1017 fossil_free(zBrName);
1018 fossil_free(zNm);
1019 }
1020 }
@@ -1060,11 +1054,11 @@
1060 if( !g.perm.Zip ){ login_needed(g.anon.Zip); return; }
1061
1062 style_set_current_feature("timeline");
1063 style_header("Suggested Tarballs And ZIP Archives");
1064
1065 zTarlistCfg = db_get("suggested-tarlist","1 trunk");
1066 db_multi_exec(
1067 "CREATE TEMP TABLE tarlist(rid INTEGER PRIMARY KEY);"
1068 );
1069 if( !g.interp ) Th_FossilInit(0);
1070 Th_SplitList(g.interp, zTarlistCfg, (int)strlen(zTarlistCfg),
1071
--- src/tar.c
+++ src/tar.c
@@ -980,20 +980,13 @@
980 if( zType[0]!='c' ){
981 timeline_extra(pQuery, tmFlags, zThisUser, zThisTag);
982 }else{
983 int rid = db_column_int(pQuery, 0);
984 const char *zUuid = db_column_text(pQuery, 1);
 
985 char *zBrName = branch_of_rid(rid);
 
 
986 char *zNm;
987
 
 
 
 
988 if( tmFlags & TIMELINE_COLUMNAR ){
989 @ <nobr>check-in:&nbsp;\
990 @ %z(href("%R/info/%!S",zUuid))<span class='timelineHash'>\
991 @ %S(zUuid)</span></a></nobr><br>
992 if( fossil_strcmp(zBrName,"trunk")!=0 ){
@@ -1008,13 +1001,14 @@
1001 if( (tmFlags & TIMELINE_GRAPH)==0 && fossil_strcmp(zBrName,"trunk")!=0 ){
1002 @ branch:&nbsp;\
1003 @ %z(href("%R/timeline?r=%t",zBrName))%h(zBrName)</a>
1004 }
1005 }
1006 zNm = archive_base_name(rid);
1007 @ %z(href("%R/tarball/%!S/%s.tar.gz",zUuid,zNm))\
1008 @ <button>Tarball</button></a>
1009 @ %z(href("%R/zip/%!S/%s.zip",zUuid,zNm))\
1010 @ <button>ZIP&nbsp;Archive</button></a>
1011 fossil_free(zBrName);
1012 fossil_free(zNm);
1013 }
1014 }
@@ -1060,11 +1054,11 @@
1054 if( !g.perm.Zip ){ login_needed(g.anon.Zip); return; }
1055
1056 style_set_current_feature("timeline");
1057 style_header("Suggested Tarballs And ZIP Archives");
1058
1059 zTarlistCfg = db_get("suggested-tarlist","off");
1060 db_multi_exec(
1061 "CREATE TEMP TABLE tarlist(rid INTEGER PRIMARY KEY);"
1062 );
1063 if( !g.interp ) Th_FossilInit(0);
1064 Th_SplitList(g.interp, zTarlistCfg, (int)strlen(zTarlistCfg),
1065
+2 -11
--- src/timeline.c
+++ src/timeline.c
@@ -1703,11 +1703,10 @@
17031703
** "like", or "regexp".
17041704
** u=USER Only show items associated with USER
17051705
** y=TYPE 'ci', 'w', 't', 'n', 'e', 'f', or 'all'.
17061706
** ss=VIEWSTYLE c: "Compact", v: "Verbose", m: "Modern", j: "Columnar",
17071707
** x: "Classic".
1708
-** tarzip Show "Tarball" and "ZIP" buttons on check-ins.
17091708
** advm Use the "Advanced" or "Busy" menu design.
17101709
** ng No Graph.
17111710
** ncp Omit cherrypick merges
17121711
** nd Do not highlight the focus check-in
17131712
** nsm Omit the submenu
@@ -1926,11 +1925,11 @@
19261925
|| (bisectLocal && !g.perm.Setup)
19271926
){
19281927
login_needed(g.anon.Read && g.anon.RdTkt && g.anon.RdWiki);
19291928
return;
19301929
}
1931
- if( zBefore || zCirca || PB("tarzip") ){
1930
+ if( zBefore || zCirca ){
19321931
if( robot_restrict("timelineX") ) return;
19331932
}
19341933
if( !bisectLocal ){
19351934
etag_check(ETAG_QUERY|ETAG_COOKIE|ETAG_DATA|ETAG_CONFIG, 0);
19361935
}
@@ -3259,11 +3258,10 @@
32593258
}
32603259
cgi_check_for_malice();
32613260
{
32623261
Matcher *pLeftBranch;
32633262
const char *zPattern = P("sl");
3264
- void (*xExtra)(Stmt*,int,const char*,const char*) = 0;
32653263
if( zPattern!=0 ){
32663264
MatchStyle ms;
32673265
if( zMatchStyle!=0 ){
32683266
ms = matchStyle;
32693267
}else{
@@ -3271,19 +3269,12 @@
32713269
}
32723270
pLeftBranch = match_create(ms,zPattern);
32733271
}else{
32743272
pLeftBranch = match_create(matchStyle, zBrName?zBrName:zTagName);
32753273
}
3276
- if( PB("tarzip") ){
3277
- if( tmFlags & TIMELINE_COMPACT ){
3278
- tmFlags &= ~TIMELINE_COMPACT;
3279
- tmFlags |= TIMELINE_VERBOSE;
3280
- }
3281
- xExtra = tarlist_extra;
3282
- }
32833274
www_print_timeline(&q, tmFlags, zThisUser, zThisTag, pLeftBranch,
3284
- selectedRid, secondaryRid, xExtra);
3275
+ selectedRid, secondaryRid, 0);
32853276
match_free(pLeftBranch);
32863277
}
32873278
db_finalize(&q);
32883279
if( zOlderButton ){
32893280
@ %z(chref("button","%s",zOlderButton))%h(zOlderButtonLabel)\
32903281
--- src/timeline.c
+++ src/timeline.c
@@ -1703,11 +1703,10 @@
1703 ** "like", or "regexp".
1704 ** u=USER Only show items associated with USER
1705 ** y=TYPE 'ci', 'w', 't', 'n', 'e', 'f', or 'all'.
1706 ** ss=VIEWSTYLE c: "Compact", v: "Verbose", m: "Modern", j: "Columnar",
1707 ** x: "Classic".
1708 ** tarzip Show "Tarball" and "ZIP" buttons on check-ins.
1709 ** advm Use the "Advanced" or "Busy" menu design.
1710 ** ng No Graph.
1711 ** ncp Omit cherrypick merges
1712 ** nd Do not highlight the focus check-in
1713 ** nsm Omit the submenu
@@ -1926,11 +1925,11 @@
1926 || (bisectLocal && !g.perm.Setup)
1927 ){
1928 login_needed(g.anon.Read && g.anon.RdTkt && g.anon.RdWiki);
1929 return;
1930 }
1931 if( zBefore || zCirca || PB("tarzip") ){
1932 if( robot_restrict("timelineX") ) return;
1933 }
1934 if( !bisectLocal ){
1935 etag_check(ETAG_QUERY|ETAG_COOKIE|ETAG_DATA|ETAG_CONFIG, 0);
1936 }
@@ -3259,11 +3258,10 @@
3259 }
3260 cgi_check_for_malice();
3261 {
3262 Matcher *pLeftBranch;
3263 const char *zPattern = P("sl");
3264 void (*xExtra)(Stmt*,int,const char*,const char*) = 0;
3265 if( zPattern!=0 ){
3266 MatchStyle ms;
3267 if( zMatchStyle!=0 ){
3268 ms = matchStyle;
3269 }else{
@@ -3271,19 +3269,12 @@
3271 }
3272 pLeftBranch = match_create(ms,zPattern);
3273 }else{
3274 pLeftBranch = match_create(matchStyle, zBrName?zBrName:zTagName);
3275 }
3276 if( PB("tarzip") ){
3277 if( tmFlags & TIMELINE_COMPACT ){
3278 tmFlags &= ~TIMELINE_COMPACT;
3279 tmFlags |= TIMELINE_VERBOSE;
3280 }
3281 xExtra = tarlist_extra;
3282 }
3283 www_print_timeline(&q, tmFlags, zThisUser, zThisTag, pLeftBranch,
3284 selectedRid, secondaryRid, xExtra);
3285 match_free(pLeftBranch);
3286 }
3287 db_finalize(&q);
3288 if( zOlderButton ){
3289 @ %z(chref("button","%s",zOlderButton))%h(zOlderButtonLabel)\
3290
--- src/timeline.c
+++ src/timeline.c
@@ -1703,11 +1703,10 @@
1703 ** "like", or "regexp".
1704 ** u=USER Only show items associated with USER
1705 ** y=TYPE 'ci', 'w', 't', 'n', 'e', 'f', or 'all'.
1706 ** ss=VIEWSTYLE c: "Compact", v: "Verbose", m: "Modern", j: "Columnar",
1707 ** x: "Classic".
 
1708 ** advm Use the "Advanced" or "Busy" menu design.
1709 ** ng No Graph.
1710 ** ncp Omit cherrypick merges
1711 ** nd Do not highlight the focus check-in
1712 ** nsm Omit the submenu
@@ -1926,11 +1925,11 @@
1925 || (bisectLocal && !g.perm.Setup)
1926 ){
1927 login_needed(g.anon.Read && g.anon.RdTkt && g.anon.RdWiki);
1928 return;
1929 }
1930 if( zBefore || zCirca ){
1931 if( robot_restrict("timelineX") ) return;
1932 }
1933 if( !bisectLocal ){
1934 etag_check(ETAG_QUERY|ETAG_COOKIE|ETAG_DATA|ETAG_CONFIG, 0);
1935 }
@@ -3259,11 +3258,10 @@
3258 }
3259 cgi_check_for_malice();
3260 {
3261 Matcher *pLeftBranch;
3262 const char *zPattern = P("sl");
 
3263 if( zPattern!=0 ){
3264 MatchStyle ms;
3265 if( zMatchStyle!=0 ){
3266 ms = matchStyle;
3267 }else{
@@ -3271,19 +3269,12 @@
3269 }
3270 pLeftBranch = match_create(ms,zPattern);
3271 }else{
3272 pLeftBranch = match_create(matchStyle, zBrName?zBrName:zTagName);
3273 }
 
 
 
 
 
 
 
3274 www_print_timeline(&q, tmFlags, zThisUser, zThisTag, pLeftBranch,
3275 selectedRid, secondaryRid, 0);
3276 match_free(pLeftBranch);
3277 }
3278 db_finalize(&q);
3279 if( zOlderButton ){
3280 @ %z(chref("button","%s",zOlderButton))%h(zOlderButtonLabel)\
3281

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button