Fossil SCM
Trying to improve the ui artifact description to something easier to parse by the human eye.
Commit
d34a1b9f3d93b072e98ae46f2a594e25dacb649a
Parent
b120bc8b262ac00…
1 file changed
+27
-23
+27
-23
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -776,10 +776,12 @@ | ||
| 776 | 776 | Stmt q; |
| 777 | 777 | int cnt = 0; |
| 778 | 778 | int nWiki = 0; |
| 779 | 779 | char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid); |
| 780 | 780 | |
| 781 | + char *prevName = 0; | |
| 782 | + | |
| 781 | 783 | db_prepare(&q, |
| 782 | 784 | "SELECT filename.name, datetime(event.mtime)," |
| 783 | 785 | " coalesce(event.ecomment,event.comment)," |
| 784 | 786 | " coalesce(event.euser,event.user)," |
| 785 | 787 | " b.uuid" |
| @@ -786,43 +788,53 @@ | ||
| 786 | 788 | " FROM mlink, filename, event, blob a, blob b" |
| 787 | 789 | " WHERE filename.fnid=mlink.fnid" |
| 788 | 790 | " AND event.objid=mlink.mid" |
| 789 | 791 | " AND a.rid=mlink.fid" |
| 790 | 792 | " AND b.rid=mlink.mid" |
| 791 | - " AND mlink.fid=%d", | |
| 793 | + " AND mlink.fid=%d" | |
| 794 | + " ORDER BY event.mtime", | |
| 792 | 795 | rid |
| 793 | 796 | ); |
| 797 | + @ <ul> | |
| 794 | 798 | while( db_step(&q)==SQLITE_ROW ){ |
| 795 | 799 | const char *zName = db_column_text(&q, 0); |
| 796 | 800 | const char *zDate = db_column_text(&q, 1); |
| 797 | 801 | const char *zCom = db_column_text(&q, 2); |
| 798 | 802 | const char *zUser = db_column_text(&q, 3); |
| 799 | 803 | 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 | |
| 811 | 821 | 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 | + @ ) | |
| 815 | 825 | if( g.okHistory ){ |
| 816 | 826 | @ <a href="%s(g.zTop)/annotate?checkin=%S(zVers)&filename=%T(zName)"> |
| 817 | 827 | @ [annotate]</a> |
| 818 | 828 | } |
| 819 | 829 | cnt++; |
| 820 | 830 | if( pDownloadName && blob_size(pDownloadName)==0 ){ |
| 821 | 831 | blob_append(pDownloadName, zName, -1); |
| 822 | 832 | } |
| 823 | 833 | } |
| 834 | + @ </ul></ul> | |
| 835 | + free(prevName); | |
| 824 | 836 | db_finalize(&q); |
| 825 | 837 | db_prepare(&q, |
| 826 | 838 | "SELECT substr(tagname, 6, 10000), datetime(event.mtime)," |
| 827 | 839 | " coalesce(event.euser, event.user)" |
| 828 | 840 | " FROM tagxref, tag, event" |
| @@ -988,17 +1000,13 @@ | ||
| 988 | 1000 | style_header("Diff"); |
| 989 | 1001 | style_submenu_element("Patch", "Patch", "%s/fdiff?v1=%T&v2=%T&patch", |
| 990 | 1002 | g.zTop, P("v1"), P("v2")); |
| 991 | 1003 | @ <h2>Differences From |
| 992 | 1004 | @ Artifact <a href="%s(g.zTop)/artifact/%S(zV1)">[%S(zV1)]</a>:</h2> |
| 993 | - @ <blockquote><p> | |
| 994 | 1005 | object_description(v1, 1, 0); |
| 995 | - @ </p></blockquote> | |
| 996 | 1006 | @ <h2>To Artifact <a href="%s(g.zTop)/artifact/%S(zV2)">[%S(zV2)]</a>:</h2> |
| 997 | - @ <blockquote><p> | |
| 998 | 1007 | object_description(v2, 1, 0); |
| 999 | - @ </p></blockquote> | |
| 1000 | 1008 | @ <hr /> |
| 1001 | 1009 | @ <blockquote><pre> |
| 1002 | 1010 | @ %h(blob_str(&diff)) |
| 1003 | 1011 | @ </pre></blockquote> |
| 1004 | 1012 | blob_reset(&diff); |
| @@ -1107,16 +1115,14 @@ | ||
| 1107 | 1115 | } |
| 1108 | 1116 | } |
| 1109 | 1117 | style_header("Hex Artifact Content"); |
| 1110 | 1118 | zUuid = db_text("?","SELECT uuid FROM blob WHERE rid=%d", rid); |
| 1111 | 1119 | @ <h2>Artifact %s(zUuid):</h2> |
| 1112 | - @ <blockquote><p> | |
| 1113 | 1120 | blob_zero(&downloadName); |
| 1114 | 1121 | object_description(rid, 0, &downloadName); |
| 1115 | 1122 | style_submenu_element("Download", "Download", |
| 1116 | 1123 | "%s/raw/%T?name=%s", g.zTop, blob_str(&downloadName), zUuid); |
| 1117 | - @ </p></blockquote> | |
| 1118 | 1124 | @ <hr /> |
| 1119 | 1125 | content_get(rid, &content); |
| 1120 | 1126 | @ <blockquote><pre> |
| 1121 | 1127 | hexdump(&content); |
| 1122 | 1128 | @ </pre></blockquote> |
| @@ -1256,11 +1262,10 @@ | ||
| 1256 | 1262 | } |
| 1257 | 1263 | } |
| 1258 | 1264 | style_header("Artifact Content"); |
| 1259 | 1265 | zUuid = db_text("?", "SELECT uuid FROM blob WHERE rid=%d", rid); |
| 1260 | 1266 | @ <h2>Artifact %s(zUuid)</h2> |
| 1261 | - @ <blockquote><p> | |
| 1262 | 1267 | blob_zero(&downloadName); |
| 1263 | 1268 | object_description(rid, 0, &downloadName); |
| 1264 | 1269 | style_submenu_element("Download", "Download", |
| 1265 | 1270 | "%s/raw/%T?name=%s", g.zTop, blob_str(&downloadName), zUuid); |
| 1266 | 1271 | zMime = mimetype_from_name(blob_str(&downloadName)); |
| @@ -1283,11 +1288,10 @@ | ||
| 1283 | 1288 | style_submenu_element("Text", "Text", |
| 1284 | 1289 | "%s/artifact/%s?txt=1", g.zTop, zUuid); |
| 1285 | 1290 | } |
| 1286 | 1291 | } |
| 1287 | 1292 | } |
| 1288 | - @ </p></blockquote> | |
| 1289 | 1293 | @ <hr /> |
| 1290 | 1294 | content_get(rid, &content); |
| 1291 | 1295 | if( renderAsWiki ){ |
| 1292 | 1296 | wiki_convert(&content, 0, 0); |
| 1293 | 1297 | }else if( renderAsHtml ){ |
| 1294 | 1298 |
| --- 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 |