Fossil SCM

Rename the "test-describe-artifacts" webpage to "bloblist". Provide an index to use for repos with more than 5000 artifacts. Improvements to the bulk artifact describer.

drh 2014-12-10 21:47 trunk
Commit f3663f9f69c0ce8eb5ca23d7ebd635a6b61f3a18
2 files changed +35 -16 +1 -1
+35 -16
--- src/name.c
+++ src/name.c
@@ -803,21 +803,21 @@
803803
db_multi_exec(
804804
"INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
805805
"SELECT blob.rid, blob.uuid, event.mtime, 'checkin',\n"
806806
" 'checkin on ' || strftime('%%Y-%%m-%%d %%H:%%M',event.mtime)\n"
807807
" FROM event, blob\n"
808
- " WHERE event.objid %s AND event.type='ci'\n"
808
+ " WHERE (event.objid %s) AND event.type='ci'\n"
809809
" AND event.objid=blob.rid;",
810810
zWhere /*safe-for-%s*/
811811
);
812812
813813
/* Describe files */
814814
db_multi_exec(
815815
"INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
816816
"SELECT blob.rid, blob.uuid, event.mtime, 'file', 'file '||filename.name\n"
817817
" FROM mlink, blob, event, filename\n"
818
- " WHERE mlink.fid %s\n"
818
+ " WHERE (mlink.fid %s)\n"
819819
" AND mlink.mid=event.objid\n"
820820
" AND filename.fnid=mlink.fnid\n"
821821
" AND mlink.fid=blob.rid;",
822822
zWhere /*safe-for-%s*/
823823
);
@@ -826,21 +826,21 @@
826826
db_multi_exec(
827827
"INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
828828
"SELECT blob.rid, blob.uuid, tagxref.mtime, 'tag',\n"
829829
" 'tag '||substr((SELECT uuid FROM blob WHERE rid=tagxref.rid),1,16)\n"
830830
" FROM tagxref, blob\n"
831
- " WHERE tagxref.srcid %s AND tagxref.srcid!=tagxref.rid\n"
831
+ " WHERE (tagxref.srcid %s) AND tagxref.srcid!=tagxref.rid\n"
832832
" AND tagxref.srcid=blob.rid;",
833833
zWhere /*safe-for-%s*/
834834
);
835835
836836
/* Cluster artifacts */
837837
db_multi_exec(
838838
"INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
839839
"SELECT blob.rid, blob.uuid, tagxref.mtime, 'cluster', 'cluster'\n"
840840
" FROM tagxref, blob\n"
841
- " WHERE tagxref.rid %s\n"
841
+ " WHERE (tagxref.rid %s)\n"
842842
" AND tagxref.tagid=(SELECT tagid FROM tag WHERE tagname='cluster')\n"
843843
" AND blob.rid=tagxref.rid;",
844844
zWhere /*safe-for-%s*/
845845
);
846846
@@ -848,11 +848,11 @@
848848
db_multi_exec(
849849
"INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
850850
"SELECT blob.rid, blob.uuid, tagxref.mtime, 'ticket',\n"
851851
" 'ticket '||substr(tag.tagname,5,21)\n"
852852
" FROM tagxref, tag, blob\n"
853
- " WHERE tagxref.rid %s\n"
853
+ " WHERE (tagxref.rid %s)\n"
854854
" AND tag.tagid=tagxref.tagid\n"
855855
" AND tag.tagname GLOB 'tkt-*'"
856856
" AND blob.rid=tagxref.rid;",
857857
zWhere /*safe-for-%s*/
858858
);
@@ -861,11 +861,11 @@
861861
db_multi_exec(
862862
"INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
863863
"SELECT blob.rid, blob.uuid, tagxref.mtime, 'wiki',\n"
864864
" printf('wiki \"%%s\"',substr(tag.tagname,6))\n"
865865
" FROM tagxref, tag, blob\n"
866
- " WHERE tagxref.rid %s\n"
866
+ " WHERE (tagxref.rid %s)\n"
867867
" AND tag.tagid=tagxref.tagid\n"
868868
" AND tag.tagname GLOB 'wiki-*'"
869869
" AND blob.rid=tagxref.rid;",
870870
zWhere /*safe-for-%s*/
871871
);
@@ -874,35 +874,45 @@
874874
db_multi_exec(
875875
"INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
876876
"SELECT blob.rid, blob.uuid, tagxref.mtime, 'event',\n"
877877
" 'event '||substr(tag.tagname,7)\n"
878878
" FROM tagxref, tag, blob\n"
879
- " WHERE tagxref.rid %s\n"
879
+ " WHERE (tagxref.rid %s)\n"
880880
" AND tag.tagid=tagxref.tagid\n"
881881
" AND tag.tagname GLOB 'event-*'"
882882
" AND blob.rid=tagxref.rid;",
883883
zWhere /*safe-for-%s*/
884884
);
885885
886886
/* Attachments */
887887
db_multi_exec(
888
- "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,detail)\n"
888
+ "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
889
+ "SELECT blob.rid, blob.uuid, attachment.mtime, 'attach-control',\n"
890
+ " 'attachment-control for '||attachment.filename\n"
891
+ " FROM attachment, blob\n"
892
+ " WHERE (attachment.attachid %s)\n"
893
+ " AND blob.rid=attachment.attachid",
894
+ zWhere /*safe-for-%s*/
895
+ );
896
+ db_multi_exec(
897
+ "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
889898
"SELECT blob.rid, blob.uuid, attachment.mtime, 'attachment',\n"
890899
" 'attachment '||attachment.filename\n"
891900
" FROM attachment, blob\n"
892
- " WHERE attachment.src %s\n"
893
- " AND blob.rid=attachment.src;",
901
+ " WHERE (blob.rid %s)\n"
902
+ " AND blob.rid NOT IN (SELECT rid FROM description)\n"
903
+ " AND blob.uuid=attachment.src",
894904
zWhere /*safe-for-%s*/
895905
);
896906
897907
/* Everything else */
898908
db_multi_exec(
899909
"INSERT OR IGNORE INTO description(rid,uuid,type,summary)\n"
900910
"SELECT blob.rid, blob.uuid,"
901911
" CASE WHEN blob.size<0 THEN 'phantom' ELSE '' END,\n"
902912
" 'unknown'\n"
903
- " FROM blob WHERE blob.rid %s;",
913
+ " FROM blob WHERE (blob.rid %s);",
904914
zWhere /*safe-for-%s*/
905915
);
906916
907917
/* Mark private elements */
908918
db_multi_exec(
@@ -938,21 +948,30 @@
938948
}
939949
940950
/*
941951
** COMMAND: test-describe-artifacts
942952
**
943
-** Usage: %fossil test-describe-artifacts
953
+** Usage: %fossil test-describe-artifacts [--from S] [--count N]
944954
**
945955
** Display a one-line description of every artifact.
946956
*/
947957
void test_describe_artifacts_cmd(void){
958
+ int iFrom = 0;
959
+ int iCnt = 1000000;
960
+ const char *z;
961
+ char *zRange;
948962
db_find_and_open_repository(0,0);
949
- describe_artifacts_to_stdout(">0", 0);
963
+ z = find_option("from",0,1);
964
+ if( z ) iFrom = atoi(z);
965
+ z = find_option("count",0,1);
966
+ if( z ) iCnt = atoi(z);
967
+ zRange = mprintf("BETWEEN %d AND %d", iFrom, iFrom+iCnt-1);
968
+ describe_artifacts_to_stdout(zRange, 0);
950969
}
951970
952971
/*
953
-** WEBPAGE: test-describe-artifacts
972
+** WEBPAGE: bloblist
954973
**
955974
** Return a page showing all artifacts in the repository
956975
*/
957976
void test_describe_artifacts_page(void){
958977
Stmt q;
@@ -967,19 +986,19 @@
967986
if( mx>n && P("s")==0 ){
968987
int i;
969988
@ <p>Select a range of artifacts to view:</p>
970989
@ <ul>
971990
for(i=1; i<=mx; i+=n){
972
- @ <li> %z(href("%R/test-describe-artifacts?s=%d&n=%d",i,n))
991
+ @ <li> %z(href("%R/bloblist?s=%d&n=%d",i,n))
973992
@ %d(i)..%d(i+n-1<mx?i+n-1:mx)</a>
974993
}
975994
@ </ul>
976995
style_footer();
977996
return;
978997
}
979998
if( mx>n ){
980
- style_submenu_element("Index", "Index", "test-describe-artifacts");
999
+ style_submenu_element("Index", "Index", "bloblist");
9811000
}
9821001
zRange = mprintf("BETWEEN %d AND %d", s, s+n-1);
9831002
describe_artifacts(zRange);
9841003
db_prepare(&q,
9851004
"SELECT rid, uuid, summary, isPrivate FROM description ORDER BY rid"
9861005
--- src/name.c
+++ src/name.c
@@ -803,21 +803,21 @@
803 db_multi_exec(
804 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
805 "SELECT blob.rid, blob.uuid, event.mtime, 'checkin',\n"
806 " 'checkin on ' || strftime('%%Y-%%m-%%d %%H:%%M',event.mtime)\n"
807 " FROM event, blob\n"
808 " WHERE event.objid %s AND event.type='ci'\n"
809 " AND event.objid=blob.rid;",
810 zWhere /*safe-for-%s*/
811 );
812
813 /* Describe files */
814 db_multi_exec(
815 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
816 "SELECT blob.rid, blob.uuid, event.mtime, 'file', 'file '||filename.name\n"
817 " FROM mlink, blob, event, filename\n"
818 " WHERE mlink.fid %s\n"
819 " AND mlink.mid=event.objid\n"
820 " AND filename.fnid=mlink.fnid\n"
821 " AND mlink.fid=blob.rid;",
822 zWhere /*safe-for-%s*/
823 );
@@ -826,21 +826,21 @@
826 db_multi_exec(
827 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
828 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'tag',\n"
829 " 'tag '||substr((SELECT uuid FROM blob WHERE rid=tagxref.rid),1,16)\n"
830 " FROM tagxref, blob\n"
831 " WHERE tagxref.srcid %s AND tagxref.srcid!=tagxref.rid\n"
832 " AND tagxref.srcid=blob.rid;",
833 zWhere /*safe-for-%s*/
834 );
835
836 /* Cluster artifacts */
837 db_multi_exec(
838 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
839 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'cluster', 'cluster'\n"
840 " FROM tagxref, blob\n"
841 " WHERE tagxref.rid %s\n"
842 " AND tagxref.tagid=(SELECT tagid FROM tag WHERE tagname='cluster')\n"
843 " AND blob.rid=tagxref.rid;",
844 zWhere /*safe-for-%s*/
845 );
846
@@ -848,11 +848,11 @@
848 db_multi_exec(
849 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
850 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'ticket',\n"
851 " 'ticket '||substr(tag.tagname,5,21)\n"
852 " FROM tagxref, tag, blob\n"
853 " WHERE tagxref.rid %s\n"
854 " AND tag.tagid=tagxref.tagid\n"
855 " AND tag.tagname GLOB 'tkt-*'"
856 " AND blob.rid=tagxref.rid;",
857 zWhere /*safe-for-%s*/
858 );
@@ -861,11 +861,11 @@
861 db_multi_exec(
862 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
863 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'wiki',\n"
864 " printf('wiki \"%%s\"',substr(tag.tagname,6))\n"
865 " FROM tagxref, tag, blob\n"
866 " WHERE tagxref.rid %s\n"
867 " AND tag.tagid=tagxref.tagid\n"
868 " AND tag.tagname GLOB 'wiki-*'"
869 " AND blob.rid=tagxref.rid;",
870 zWhere /*safe-for-%s*/
871 );
@@ -874,35 +874,45 @@
874 db_multi_exec(
875 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
876 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'event',\n"
877 " 'event '||substr(tag.tagname,7)\n"
878 " FROM tagxref, tag, blob\n"
879 " WHERE tagxref.rid %s\n"
880 " AND tag.tagid=tagxref.tagid\n"
881 " AND tag.tagname GLOB 'event-*'"
882 " AND blob.rid=tagxref.rid;",
883 zWhere /*safe-for-%s*/
884 );
885
886 /* Attachments */
887 db_multi_exec(
888 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,detail)\n"
 
 
 
 
 
 
 
 
 
889 "SELECT blob.rid, blob.uuid, attachment.mtime, 'attachment',\n"
890 " 'attachment '||attachment.filename\n"
891 " FROM attachment, blob\n"
892 " WHERE attachment.src %s\n"
893 " AND blob.rid=attachment.src;",
 
894 zWhere /*safe-for-%s*/
895 );
896
897 /* Everything else */
898 db_multi_exec(
899 "INSERT OR IGNORE INTO description(rid,uuid,type,summary)\n"
900 "SELECT blob.rid, blob.uuid,"
901 " CASE WHEN blob.size<0 THEN 'phantom' ELSE '' END,\n"
902 " 'unknown'\n"
903 " FROM blob WHERE blob.rid %s;",
904 zWhere /*safe-for-%s*/
905 );
906
907 /* Mark private elements */
908 db_multi_exec(
@@ -938,21 +948,30 @@
938 }
939
940 /*
941 ** COMMAND: test-describe-artifacts
942 **
943 ** Usage: %fossil test-describe-artifacts
944 **
945 ** Display a one-line description of every artifact.
946 */
947 void test_describe_artifacts_cmd(void){
 
 
 
 
948 db_find_and_open_repository(0,0);
949 describe_artifacts_to_stdout(">0", 0);
 
 
 
 
 
950 }
951
952 /*
953 ** WEBPAGE: test-describe-artifacts
954 **
955 ** Return a page showing all artifacts in the repository
956 */
957 void test_describe_artifacts_page(void){
958 Stmt q;
@@ -967,19 +986,19 @@
967 if( mx>n && P("s")==0 ){
968 int i;
969 @ <p>Select a range of artifacts to view:</p>
970 @ <ul>
971 for(i=1; i<=mx; i+=n){
972 @ <li> %z(href("%R/test-describe-artifacts?s=%d&n=%d",i,n))
973 @ %d(i)..%d(i+n-1<mx?i+n-1:mx)</a>
974 }
975 @ </ul>
976 style_footer();
977 return;
978 }
979 if( mx>n ){
980 style_submenu_element("Index", "Index", "test-describe-artifacts");
981 }
982 zRange = mprintf("BETWEEN %d AND %d", s, s+n-1);
983 describe_artifacts(zRange);
984 db_prepare(&q,
985 "SELECT rid, uuid, summary, isPrivate FROM description ORDER BY rid"
986
--- src/name.c
+++ src/name.c
@@ -803,21 +803,21 @@
803 db_multi_exec(
804 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
805 "SELECT blob.rid, blob.uuid, event.mtime, 'checkin',\n"
806 " 'checkin on ' || strftime('%%Y-%%m-%%d %%H:%%M',event.mtime)\n"
807 " FROM event, blob\n"
808 " WHERE (event.objid %s) AND event.type='ci'\n"
809 " AND event.objid=blob.rid;",
810 zWhere /*safe-for-%s*/
811 );
812
813 /* Describe files */
814 db_multi_exec(
815 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
816 "SELECT blob.rid, blob.uuid, event.mtime, 'file', 'file '||filename.name\n"
817 " FROM mlink, blob, event, filename\n"
818 " WHERE (mlink.fid %s)\n"
819 " AND mlink.mid=event.objid\n"
820 " AND filename.fnid=mlink.fnid\n"
821 " AND mlink.fid=blob.rid;",
822 zWhere /*safe-for-%s*/
823 );
@@ -826,21 +826,21 @@
826 db_multi_exec(
827 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
828 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'tag',\n"
829 " 'tag '||substr((SELECT uuid FROM blob WHERE rid=tagxref.rid),1,16)\n"
830 " FROM tagxref, blob\n"
831 " WHERE (tagxref.srcid %s) AND tagxref.srcid!=tagxref.rid\n"
832 " AND tagxref.srcid=blob.rid;",
833 zWhere /*safe-for-%s*/
834 );
835
836 /* Cluster artifacts */
837 db_multi_exec(
838 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
839 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'cluster', 'cluster'\n"
840 " FROM tagxref, blob\n"
841 " WHERE (tagxref.rid %s)\n"
842 " AND tagxref.tagid=(SELECT tagid FROM tag WHERE tagname='cluster')\n"
843 " AND blob.rid=tagxref.rid;",
844 zWhere /*safe-for-%s*/
845 );
846
@@ -848,11 +848,11 @@
848 db_multi_exec(
849 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
850 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'ticket',\n"
851 " 'ticket '||substr(tag.tagname,5,21)\n"
852 " FROM tagxref, tag, blob\n"
853 " WHERE (tagxref.rid %s)\n"
854 " AND tag.tagid=tagxref.tagid\n"
855 " AND tag.tagname GLOB 'tkt-*'"
856 " AND blob.rid=tagxref.rid;",
857 zWhere /*safe-for-%s*/
858 );
@@ -861,11 +861,11 @@
861 db_multi_exec(
862 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
863 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'wiki',\n"
864 " printf('wiki \"%%s\"',substr(tag.tagname,6))\n"
865 " FROM tagxref, tag, blob\n"
866 " WHERE (tagxref.rid %s)\n"
867 " AND tag.tagid=tagxref.tagid\n"
868 " AND tag.tagname GLOB 'wiki-*'"
869 " AND blob.rid=tagxref.rid;",
870 zWhere /*safe-for-%s*/
871 );
@@ -874,35 +874,45 @@
874 db_multi_exec(
875 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
876 "SELECT blob.rid, blob.uuid, tagxref.mtime, 'event',\n"
877 " 'event '||substr(tag.tagname,7)\n"
878 " FROM tagxref, tag, blob\n"
879 " WHERE (tagxref.rid %s)\n"
880 " AND tag.tagid=tagxref.tagid\n"
881 " AND tag.tagname GLOB 'event-*'"
882 " AND blob.rid=tagxref.rid;",
883 zWhere /*safe-for-%s*/
884 );
885
886 /* Attachments */
887 db_multi_exec(
888 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
889 "SELECT blob.rid, blob.uuid, attachment.mtime, 'attach-control',\n"
890 " 'attachment-control for '||attachment.filename\n"
891 " FROM attachment, blob\n"
892 " WHERE (attachment.attachid %s)\n"
893 " AND blob.rid=attachment.attachid",
894 zWhere /*safe-for-%s*/
895 );
896 db_multi_exec(
897 "INSERT OR IGNORE INTO description(rid,uuid,ctime,type,summary)\n"
898 "SELECT blob.rid, blob.uuid, attachment.mtime, 'attachment',\n"
899 " 'attachment '||attachment.filename\n"
900 " FROM attachment, blob\n"
901 " WHERE (blob.rid %s)\n"
902 " AND blob.rid NOT IN (SELECT rid FROM description)\n"
903 " AND blob.uuid=attachment.src",
904 zWhere /*safe-for-%s*/
905 );
906
907 /* Everything else */
908 db_multi_exec(
909 "INSERT OR IGNORE INTO description(rid,uuid,type,summary)\n"
910 "SELECT blob.rid, blob.uuid,"
911 " CASE WHEN blob.size<0 THEN 'phantom' ELSE '' END,\n"
912 " 'unknown'\n"
913 " FROM blob WHERE (blob.rid %s);",
914 zWhere /*safe-for-%s*/
915 );
916
917 /* Mark private elements */
918 db_multi_exec(
@@ -938,21 +948,30 @@
948 }
949
950 /*
951 ** COMMAND: test-describe-artifacts
952 **
953 ** Usage: %fossil test-describe-artifacts [--from S] [--count N]
954 **
955 ** Display a one-line description of every artifact.
956 */
957 void test_describe_artifacts_cmd(void){
958 int iFrom = 0;
959 int iCnt = 1000000;
960 const char *z;
961 char *zRange;
962 db_find_and_open_repository(0,0);
963 z = find_option("from",0,1);
964 if( z ) iFrom = atoi(z);
965 z = find_option("count",0,1);
966 if( z ) iCnt = atoi(z);
967 zRange = mprintf("BETWEEN %d AND %d", iFrom, iFrom+iCnt-1);
968 describe_artifacts_to_stdout(zRange, 0);
969 }
970
971 /*
972 ** WEBPAGE: bloblist
973 **
974 ** Return a page showing all artifacts in the repository
975 */
976 void test_describe_artifacts_page(void){
977 Stmt q;
@@ -967,19 +986,19 @@
986 if( mx>n && P("s")==0 ){
987 int i;
988 @ <p>Select a range of artifacts to view:</p>
989 @ <ul>
990 for(i=1; i<=mx; i+=n){
991 @ <li> %z(href("%R/bloblist?s=%d&n=%d",i,n))
992 @ %d(i)..%d(i+n-1<mx?i+n-1:mx)</a>
993 }
994 @ </ul>
995 style_footer();
996 return;
997 }
998 if( mx>n ){
999 style_submenu_element("Index", "Index", "bloblist");
1000 }
1001 zRange = mprintf("BETWEEN %d AND %d", s, s+n-1);
1002 describe_artifacts(zRange);
1003 db_prepare(&q,
1004 "SELECT rid, uuid, summary, isPrivate FROM description ORDER BY rid"
1005
+1 -1
--- src/sitemap.c
+++ src/sitemap.c
@@ -58,11 +58,11 @@
5858
@ <li>%z(href("%R/attachlist"))List of Attachments</a>
5959
@ <li>Repository Status
6060
@ <ul>
6161
@ <li>%z(href("%R/stat"))Status Summary</a>
6262
@ <li>%z(href("%R/urllist"))List of URLs used to access this repository</a>
63
- @ <li>%z(href("%R/test-describe-artifacts"))List of Artifacts</a>
63
+ @ <li>%z(href("%R/bloblist"))List of Artifacts</a>
6464
@ </ul>
6565
@ <li>On-line Documentation
6666
@ <ul>
6767
@ <li>%z(href("%R/help"))List of All Commands and Web Pages</a>
6868
@ <li>%z(href("%R/test-all-help"))All "help" text on a single page</a>
6969
--- src/sitemap.c
+++ src/sitemap.c
@@ -58,11 +58,11 @@
58 @ <li>%z(href("%R/attachlist"))List of Attachments</a>
59 @ <li>Repository Status
60 @ <ul>
61 @ <li>%z(href("%R/stat"))Status Summary</a>
62 @ <li>%z(href("%R/urllist"))List of URLs used to access this repository</a>
63 @ <li>%z(href("%R/test-describe-artifacts"))List of Artifacts</a>
64 @ </ul>
65 @ <li>On-line Documentation
66 @ <ul>
67 @ <li>%z(href("%R/help"))List of All Commands and Web Pages</a>
68 @ <li>%z(href("%R/test-all-help"))All "help" text on a single page</a>
69
--- src/sitemap.c
+++ src/sitemap.c
@@ -58,11 +58,11 @@
58 @ <li>%z(href("%R/attachlist"))List of Attachments</a>
59 @ <li>Repository Status
60 @ <ul>
61 @ <li>%z(href("%R/stat"))Status Summary</a>
62 @ <li>%z(href("%R/urllist"))List of URLs used to access this repository</a>
63 @ <li>%z(href("%R/bloblist"))List of Artifacts</a>
64 @ </ul>
65 @ <li>On-line Documentation
66 @ <ul>
67 @ <li>%z(href("%R/help"))List of All Commands and Web Pages</a>
68 @ <li>%z(href("%R/test-all-help"))All "help" text on a single page</a>
69

Keyboard Shortcuts

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