Fossil SCM

Trying to improve the ui artifact description to something easier to parse by the human eye.

viriketo 2011-08-31 08:24 UTC trunk
Commit d34a1b9f3d93b072e98ae46f2a594e25dacb649a
1 file changed +27 -23
+27 -23
--- src/info.c
+++ src/info.c
@@ -776,10 +776,12 @@
776776
Stmt q;
777777
int cnt = 0;
778778
int nWiki = 0;
779779
char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
780780
781
+ char *prevName = 0;
782
+
781783
db_prepare(&q,
782784
"SELECT filename.name, datetime(event.mtime),"
783785
" coalesce(event.ecomment,event.comment),"
784786
" coalesce(event.euser,event.user),"
785787
" b.uuid"
@@ -786,43 +788,53 @@
786788
" FROM mlink, filename, event, blob a, blob b"
787789
" WHERE filename.fnid=mlink.fnid"
788790
" AND event.objid=mlink.mid"
789791
" AND a.rid=mlink.fid"
790792
" AND b.rid=mlink.mid"
791
- " AND mlink.fid=%d",
793
+ " AND mlink.fid=%d"
794
+ " ORDER BY event.mtime",
792795
rid
793796
);
797
+ @ <ul>
794798
while( db_step(&q)==SQLITE_ROW ){
795799
const char *zName = db_column_text(&q, 0);
796800
const char *zDate = db_column_text(&q, 1);
797801
const char *zCom = db_column_text(&q, 2);
798802
const char *zUser = db_column_text(&q, 3);
799803
const char *zVers = db_column_text(&q, 4);
800
- if( cnt>0 ){
801
- @ Also file
802
- }else{
803
- @ File
804
- }
805
- if( g.okHistory ){
806
- @ <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
807
- }else{
808
- @ %h(zName)
809
- }
810
- @ part of check-in
804
+ if( !prevName || fossil_strcmp(zName, prevName) ) {
805
+ if( !prevName ) {
806
+ @ <ul>
807
+ prevName = fossil_strdup(zName);
808
+ }
809
+ @ <li>File
810
+ if( g.okHistory ){
811
+ @ <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
812
+ }else{
813
+ @ %h(zName)
814
+ }
815
+ @ <ul>
816
+ prevName = fossil_strdup(zName);
817
+ }
818
+ @ <li>
819
+ hyperlink_to_date(zDate,"");
820
+ @ - part of checkin
811821
hyperlink_to_uuid(zVers);
812
- @ - %w(zCom) by
813
- hyperlink_to_user(zUser,zDate," on");
814
- hyperlink_to_date(zDate,".");
822
+ @ - %w(zCom) (user:
823
+ hyperlink_to_user(zUser,zDate,"");
824
+ @ )
815825
if( g.okHistory ){
816826
@ <a href="%s(g.zTop)/annotate?checkin=%S(zVers)&filename=%T(zName)">
817827
@ [annotate]</a>
818828
}
819829
cnt++;
820830
if( pDownloadName && blob_size(pDownloadName)==0 ){
821831
blob_append(pDownloadName, zName, -1);
822832
}
823833
}
834
+ @ </ul></ul>
835
+ free(prevName);
824836
db_finalize(&q);
825837
db_prepare(&q,
826838
"SELECT substr(tagname, 6, 10000), datetime(event.mtime),"
827839
" coalesce(event.euser, event.user)"
828840
" FROM tagxref, tag, event"
@@ -988,17 +1000,13 @@
9881000
style_header("Diff");
9891001
style_submenu_element("Patch", "Patch", "%s/fdiff?v1=%T&v2=%T&patch",
9901002
g.zTop, P("v1"), P("v2"));
9911003
@ <h2>Differences From
9921004
@ Artifact <a href="%s(g.zTop)/artifact/%S(zV1)">[%S(zV1)]</a>:</h2>
993
- @ <blockquote><p>
9941005
object_description(v1, 1, 0);
995
- @ </p></blockquote>
9961006
@ <h2>To Artifact <a href="%s(g.zTop)/artifact/%S(zV2)">[%S(zV2)]</a>:</h2>
997
- @ <blockquote><p>
9981007
object_description(v2, 1, 0);
999
- @ </p></blockquote>
10001008
@ <hr />
10011009
@ <blockquote><pre>
10021010
@ %h(blob_str(&diff))
10031011
@ </pre></blockquote>
10041012
blob_reset(&diff);
@@ -1107,16 +1115,14 @@
11071115
}
11081116
}
11091117
style_header("Hex Artifact Content");
11101118
zUuid = db_text("?","SELECT uuid FROM blob WHERE rid=%d", rid);
11111119
@ <h2>Artifact %s(zUuid):</h2>
1112
- @ <blockquote><p>
11131120
blob_zero(&downloadName);
11141121
object_description(rid, 0, &downloadName);
11151122
style_submenu_element("Download", "Download",
11161123
"%s/raw/%T?name=%s", g.zTop, blob_str(&downloadName), zUuid);
1117
- @ </p></blockquote>
11181124
@ <hr />
11191125
content_get(rid, &content);
11201126
@ <blockquote><pre>
11211127
hexdump(&content);
11221128
@ </pre></blockquote>
@@ -1256,11 +1262,10 @@
12561262
}
12571263
}
12581264
style_header("Artifact Content");
12591265
zUuid = db_text("?", "SELECT uuid FROM blob WHERE rid=%d", rid);
12601266
@ <h2>Artifact %s(zUuid)</h2>
1261
- @ <blockquote><p>
12621267
blob_zero(&downloadName);
12631268
object_description(rid, 0, &downloadName);
12641269
style_submenu_element("Download", "Download",
12651270
"%s/raw/%T?name=%s", g.zTop, blob_str(&downloadName), zUuid);
12661271
zMime = mimetype_from_name(blob_str(&downloadName));
@@ -1283,11 +1288,10 @@
12831288
style_submenu_element("Text", "Text",
12841289
"%s/artifact/%s?txt=1", g.zTop, zUuid);
12851290
}
12861291
}
12871292
}
1288
- @ </p></blockquote>
12891293
@ <hr />
12901294
content_get(rid, &content);
12911295
if( renderAsWiki ){
12921296
wiki_convert(&content, 0, 0);
12931297
}else if( renderAsHtml ){
12941298
--- src/info.c
+++ src/info.c
@@ -776,10 +776,12 @@
776 Stmt q;
777 int cnt = 0;
778 int nWiki = 0;
779 char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
780
 
 
781 db_prepare(&q,
782 "SELECT filename.name, datetime(event.mtime),"
783 " coalesce(event.ecomment,event.comment),"
784 " coalesce(event.euser,event.user),"
785 " b.uuid"
@@ -786,43 +788,53 @@
786 " FROM mlink, filename, event, blob a, blob b"
787 " WHERE filename.fnid=mlink.fnid"
788 " AND event.objid=mlink.mid"
789 " AND a.rid=mlink.fid"
790 " AND b.rid=mlink.mid"
791 " AND mlink.fid=%d",
 
792 rid
793 );
 
794 while( db_step(&q)==SQLITE_ROW ){
795 const char *zName = db_column_text(&q, 0);
796 const char *zDate = db_column_text(&q, 1);
797 const char *zCom = db_column_text(&q, 2);
798 const char *zUser = db_column_text(&q, 3);
799 const char *zVers = db_column_text(&q, 4);
800 if( cnt>0 ){
801 @ Also file
802 }else{
803 @ File
804 }
805 if( g.okHistory ){
806 @ <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
807 }else{
808 @ %h(zName)
809 }
810 @ part of check-in
 
 
 
 
 
 
811 hyperlink_to_uuid(zVers);
812 @ - %w(zCom) by
813 hyperlink_to_user(zUser,zDate," on");
814 hyperlink_to_date(zDate,".");
815 if( g.okHistory ){
816 @ <a href="%s(g.zTop)/annotate?checkin=%S(zVers)&filename=%T(zName)">
817 @ [annotate]</a>
818 }
819 cnt++;
820 if( pDownloadName && blob_size(pDownloadName)==0 ){
821 blob_append(pDownloadName, zName, -1);
822 }
823 }
 
 
824 db_finalize(&q);
825 db_prepare(&q,
826 "SELECT substr(tagname, 6, 10000), datetime(event.mtime),"
827 " coalesce(event.euser, event.user)"
828 " FROM tagxref, tag, event"
@@ -988,17 +1000,13 @@
988 style_header("Diff");
989 style_submenu_element("Patch", "Patch", "%s/fdiff?v1=%T&v2=%T&patch",
990 g.zTop, P("v1"), P("v2"));
991 @ <h2>Differences From
992 @ Artifact <a href="%s(g.zTop)/artifact/%S(zV1)">[%S(zV1)]</a>:</h2>
993 @ <blockquote><p>
994 object_description(v1, 1, 0);
995 @ </p></blockquote>
996 @ <h2>To Artifact <a href="%s(g.zTop)/artifact/%S(zV2)">[%S(zV2)]</a>:</h2>
997 @ <blockquote><p>
998 object_description(v2, 1, 0);
999 @ </p></blockquote>
1000 @ <hr />
1001 @ <blockquote><pre>
1002 @ %h(blob_str(&diff))
1003 @ </pre></blockquote>
1004 blob_reset(&diff);
@@ -1107,16 +1115,14 @@
1107 }
1108 }
1109 style_header("Hex Artifact Content");
1110 zUuid = db_text("?","SELECT uuid FROM blob WHERE rid=%d", rid);
1111 @ <h2>Artifact %s(zUuid):</h2>
1112 @ <blockquote><p>
1113 blob_zero(&downloadName);
1114 object_description(rid, 0, &downloadName);
1115 style_submenu_element("Download", "Download",
1116 "%s/raw/%T?name=%s", g.zTop, blob_str(&downloadName), zUuid);
1117 @ </p></blockquote>
1118 @ <hr />
1119 content_get(rid, &content);
1120 @ <blockquote><pre>
1121 hexdump(&content);
1122 @ </pre></blockquote>
@@ -1256,11 +1262,10 @@
1256 }
1257 }
1258 style_header("Artifact Content");
1259 zUuid = db_text("?", "SELECT uuid FROM blob WHERE rid=%d", rid);
1260 @ <h2>Artifact %s(zUuid)</h2>
1261 @ <blockquote><p>
1262 blob_zero(&downloadName);
1263 object_description(rid, 0, &downloadName);
1264 style_submenu_element("Download", "Download",
1265 "%s/raw/%T?name=%s", g.zTop, blob_str(&downloadName), zUuid);
1266 zMime = mimetype_from_name(blob_str(&downloadName));
@@ -1283,11 +1288,10 @@
1283 style_submenu_element("Text", "Text",
1284 "%s/artifact/%s?txt=1", g.zTop, zUuid);
1285 }
1286 }
1287 }
1288 @ </p></blockquote>
1289 @ <hr />
1290 content_get(rid, &content);
1291 if( renderAsWiki ){
1292 wiki_convert(&content, 0, 0);
1293 }else if( renderAsHtml ){
1294
--- src/info.c
+++ src/info.c
@@ -776,10 +776,12 @@
776 Stmt q;
777 int cnt = 0;
778 int nWiki = 0;
779 char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
780
781 char *prevName = 0;
782
783 db_prepare(&q,
784 "SELECT filename.name, datetime(event.mtime),"
785 " coalesce(event.ecomment,event.comment),"
786 " coalesce(event.euser,event.user),"
787 " b.uuid"
@@ -786,43 +788,53 @@
788 " FROM mlink, filename, event, blob a, blob b"
789 " WHERE filename.fnid=mlink.fnid"
790 " AND event.objid=mlink.mid"
791 " AND a.rid=mlink.fid"
792 " AND b.rid=mlink.mid"
793 " AND mlink.fid=%d"
794 " ORDER BY event.mtime",
795 rid
796 );
797 @ <ul>
798 while( db_step(&q)==SQLITE_ROW ){
799 const char *zName = db_column_text(&q, 0);
800 const char *zDate = db_column_text(&q, 1);
801 const char *zCom = db_column_text(&q, 2);
802 const char *zUser = db_column_text(&q, 3);
803 const char *zVers = db_column_text(&q, 4);
804 if( !prevName || fossil_strcmp(zName, prevName) ) {
805 if( !prevName ) {
806 @ <ul>
807 prevName = fossil_strdup(zName);
808 }
809 @ <li>File
810 if( g.okHistory ){
811 @ <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
812 }else{
813 @ %h(zName)
814 }
815 @ <ul>
816 prevName = fossil_strdup(zName);
817 }
818 @ <li>
819 hyperlink_to_date(zDate,"");
820 @ - part of checkin
821 hyperlink_to_uuid(zVers);
822 @ - %w(zCom) (user:
823 hyperlink_to_user(zUser,zDate,"");
824 @ )
825 if( g.okHistory ){
826 @ <a href="%s(g.zTop)/annotate?checkin=%S(zVers)&filename=%T(zName)">
827 @ [annotate]</a>
828 }
829 cnt++;
830 if( pDownloadName && blob_size(pDownloadName)==0 ){
831 blob_append(pDownloadName, zName, -1);
832 }
833 }
834 @ </ul></ul>
835 free(prevName);
836 db_finalize(&q);
837 db_prepare(&q,
838 "SELECT substr(tagname, 6, 10000), datetime(event.mtime),"
839 " coalesce(event.euser, event.user)"
840 " FROM tagxref, tag, event"
@@ -988,17 +1000,13 @@
1000 style_header("Diff");
1001 style_submenu_element("Patch", "Patch", "%s/fdiff?v1=%T&v2=%T&patch",
1002 g.zTop, P("v1"), P("v2"));
1003 @ <h2>Differences From
1004 @ Artifact <a href="%s(g.zTop)/artifact/%S(zV1)">[%S(zV1)]</a>:</h2>
 
1005 object_description(v1, 1, 0);
 
1006 @ <h2>To Artifact <a href="%s(g.zTop)/artifact/%S(zV2)">[%S(zV2)]</a>:</h2>
 
1007 object_description(v2, 1, 0);
 
1008 @ <hr />
1009 @ <blockquote><pre>
1010 @ %h(blob_str(&diff))
1011 @ </pre></blockquote>
1012 blob_reset(&diff);
@@ -1107,16 +1115,14 @@
1115 }
1116 }
1117 style_header("Hex Artifact Content");
1118 zUuid = db_text("?","SELECT uuid FROM blob WHERE rid=%d", rid);
1119 @ <h2>Artifact %s(zUuid):</h2>
 
1120 blob_zero(&downloadName);
1121 object_description(rid, 0, &downloadName);
1122 style_submenu_element("Download", "Download",
1123 "%s/raw/%T?name=%s", g.zTop, blob_str(&downloadName), zUuid);
 
1124 @ <hr />
1125 content_get(rid, &content);
1126 @ <blockquote><pre>
1127 hexdump(&content);
1128 @ </pre></blockquote>
@@ -1256,11 +1262,10 @@
1262 }
1263 }
1264 style_header("Artifact Content");
1265 zUuid = db_text("?", "SELECT uuid FROM blob WHERE rid=%d", rid);
1266 @ <h2>Artifact %s(zUuid)</h2>
 
1267 blob_zero(&downloadName);
1268 object_description(rid, 0, &downloadName);
1269 style_submenu_element("Download", "Download",
1270 "%s/raw/%T?name=%s", g.zTop, blob_str(&downloadName), zUuid);
1271 zMime = mimetype_from_name(blob_str(&downloadName));
@@ -1283,11 +1288,10 @@
1288 style_submenu_element("Text", "Text",
1289 "%s/artifact/%s?txt=1", g.zTop, zUuid);
1290 }
1291 }
1292 }
 
1293 @ <hr />
1294 content_get(rid, &content);
1295 if( renderAsWiki ){
1296 wiki_convert(&content, 0, 0);
1297 }else if( renderAsHtml ){
1298

Keyboard Shortcuts

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