Fossil SCM
Enhance the /reports page to show two new sub-types of activities: "Merge Check-ins" and "Non-merge Check-ins".
Commit
37a80fbfc71d741b9f4b6110062f04576507630f38d376eb3dc958350e368354
Parent
196dfedf7fc467c…
1 file changed
+25
-4
+25
-4
| --- src/statrep.c | ||
| +++ src/statrep.c | ||
| @@ -81,10 +81,20 @@ | ||
| 81 | 81 | case 'g': |
| 82 | 82 | case 'G': |
| 83 | 83 | zRealType = "g"; |
| 84 | 84 | rc = *zRealType; |
| 85 | 85 | break; |
| 86 | + case 'm': | |
| 87 | + case 'M': | |
| 88 | + zRealType = "m"; | |
| 89 | + rc = *zRealType; | |
| 90 | + break; | |
| 91 | + case 'n': | |
| 92 | + case 'N': | |
| 93 | + zRealType = "n"; | |
| 94 | + rc = *zRealType; | |
| 95 | + break; | |
| 86 | 96 | case 't': |
| 87 | 97 | case 'T': |
| 88 | 98 | zRealType = "t"; |
| 89 | 99 | rc = *zRealType; |
| 90 | 100 | break; |
| @@ -103,19 +113,28 @@ | ||
| 103 | 113 | " (event.mtime BETWEEN julianday(%Q) AND julianday(%Q))", |
| 104 | 114 | P("from"), P("to")); |
| 105 | 115 | }else{ |
| 106 | 116 | zTimeSpan = " 1"; |
| 107 | 117 | } |
| 108 | - if(zRealType){ | |
| 118 | + if( zRealType==0 ){ | |
| 119 | + statsReportTimelineYFlag = "a"; | |
| 120 | + db_multi_exec("CREATE TEMP VIEW v_reports AS " | |
| 121 | + "SELECT * FROM event WHERE %s", zTimeSpan/*safe-for-%s*/); | |
| 122 | + }else if( rc!='n' && rc!='m' ){ | |
| 109 | 123 | statsReportTimelineYFlag = zRealType; |
| 110 | 124 | db_multi_exec("CREATE TEMP VIEW v_reports AS " |
| 111 | 125 | "SELECT * FROM event WHERE (type GLOB %Q) AND %s", |
| 112 | 126 | zRealType, zTimeSpan/*safe-for-%s*/); |
| 113 | 127 | }else{ |
| 114 | - statsReportTimelineYFlag = "a"; | |
| 115 | - db_multi_exec("CREATE TEMP VIEW v_reports AS " | |
| 116 | - "SELECT * FROM event WHERE %s", zTimeSpan/*safe-for-%s*/); | |
| 128 | + const char *zNot = rc=='n' ? "NOT" : ""; | |
| 129 | + statsReportTimelineYFlag = "ci"; | |
| 130 | + db_multi_exec( | |
| 131 | + "CREATE TEMP VIEW v_reports AS " | |
| 132 | + "SELECT * FROM event WHERE type='ci' AND %s" | |
| 133 | + " AND objid %s IN (SELECT cid FROM plink WHERE NOT isprim)", | |
| 134 | + zTimeSpan/*safe-for-%s*/, zNot/*safe-for-%s*/ | |
| 135 | + ); | |
| 117 | 136 | } |
| 118 | 137 | return statsReportType = rc; |
| 119 | 138 | } |
| 120 | 139 | |
| 121 | 140 | /* |
| @@ -859,10 +878,12 @@ | ||
| 859 | 878 | }; |
| 860 | 879 | static const char *const azType[] = { |
| 861 | 880 | "a", "All Changes", |
| 862 | 881 | "ci", "Check-ins", |
| 863 | 882 | "f", "Forum Posts", |
| 883 | + "m", "Merge check-ins", | |
| 884 | + "n", "Non-merge check-ins", | |
| 864 | 885 | "g", "Tags", |
| 865 | 886 | "e", "Tech Notes", |
| 866 | 887 | "t", "Tickets", |
| 867 | 888 | "w", "Wiki" |
| 868 | 889 | }; |
| 869 | 890 |
| --- src/statrep.c | |
| +++ src/statrep.c | |
| @@ -81,10 +81,20 @@ | |
| 81 | case 'g': |
| 82 | case 'G': |
| 83 | zRealType = "g"; |
| 84 | rc = *zRealType; |
| 85 | break; |
| 86 | case 't': |
| 87 | case 'T': |
| 88 | zRealType = "t"; |
| 89 | rc = *zRealType; |
| 90 | break; |
| @@ -103,19 +113,28 @@ | |
| 103 | " (event.mtime BETWEEN julianday(%Q) AND julianday(%Q))", |
| 104 | P("from"), P("to")); |
| 105 | }else{ |
| 106 | zTimeSpan = " 1"; |
| 107 | } |
| 108 | if(zRealType){ |
| 109 | statsReportTimelineYFlag = zRealType; |
| 110 | db_multi_exec("CREATE TEMP VIEW v_reports AS " |
| 111 | "SELECT * FROM event WHERE (type GLOB %Q) AND %s", |
| 112 | zRealType, zTimeSpan/*safe-for-%s*/); |
| 113 | }else{ |
| 114 | statsReportTimelineYFlag = "a"; |
| 115 | db_multi_exec("CREATE TEMP VIEW v_reports AS " |
| 116 | "SELECT * FROM event WHERE %s", zTimeSpan/*safe-for-%s*/); |
| 117 | } |
| 118 | return statsReportType = rc; |
| 119 | } |
| 120 | |
| 121 | /* |
| @@ -859,10 +878,12 @@ | |
| 859 | }; |
| 860 | static const char *const azType[] = { |
| 861 | "a", "All Changes", |
| 862 | "ci", "Check-ins", |
| 863 | "f", "Forum Posts", |
| 864 | "g", "Tags", |
| 865 | "e", "Tech Notes", |
| 866 | "t", "Tickets", |
| 867 | "w", "Wiki" |
| 868 | }; |
| 869 |
| --- src/statrep.c | |
| +++ src/statrep.c | |
| @@ -81,10 +81,20 @@ | |
| 81 | case 'g': |
| 82 | case 'G': |
| 83 | zRealType = "g"; |
| 84 | rc = *zRealType; |
| 85 | break; |
| 86 | case 'm': |
| 87 | case 'M': |
| 88 | zRealType = "m"; |
| 89 | rc = *zRealType; |
| 90 | break; |
| 91 | case 'n': |
| 92 | case 'N': |
| 93 | zRealType = "n"; |
| 94 | rc = *zRealType; |
| 95 | break; |
| 96 | case 't': |
| 97 | case 'T': |
| 98 | zRealType = "t"; |
| 99 | rc = *zRealType; |
| 100 | break; |
| @@ -103,19 +113,28 @@ | |
| 113 | " (event.mtime BETWEEN julianday(%Q) AND julianday(%Q))", |
| 114 | P("from"), P("to")); |
| 115 | }else{ |
| 116 | zTimeSpan = " 1"; |
| 117 | } |
| 118 | if( zRealType==0 ){ |
| 119 | statsReportTimelineYFlag = "a"; |
| 120 | db_multi_exec("CREATE TEMP VIEW v_reports AS " |
| 121 | "SELECT * FROM event WHERE %s", zTimeSpan/*safe-for-%s*/); |
| 122 | }else if( rc!='n' && rc!='m' ){ |
| 123 | statsReportTimelineYFlag = zRealType; |
| 124 | db_multi_exec("CREATE TEMP VIEW v_reports AS " |
| 125 | "SELECT * FROM event WHERE (type GLOB %Q) AND %s", |
| 126 | zRealType, zTimeSpan/*safe-for-%s*/); |
| 127 | }else{ |
| 128 | const char *zNot = rc=='n' ? "NOT" : ""; |
| 129 | statsReportTimelineYFlag = "ci"; |
| 130 | db_multi_exec( |
| 131 | "CREATE TEMP VIEW v_reports AS " |
| 132 | "SELECT * FROM event WHERE type='ci' AND %s" |
| 133 | " AND objid %s IN (SELECT cid FROM plink WHERE NOT isprim)", |
| 134 | zTimeSpan/*safe-for-%s*/, zNot/*safe-for-%s*/ |
| 135 | ); |
| 136 | } |
| 137 | return statsReportType = rc; |
| 138 | } |
| 139 | |
| 140 | /* |
| @@ -859,10 +878,12 @@ | |
| 878 | }; |
| 879 | static const char *const azType[] = { |
| 880 | "a", "All Changes", |
| 881 | "ci", "Check-ins", |
| 882 | "f", "Forum Posts", |
| 883 | "m", "Merge check-ins", |
| 884 | "n", "Non-merge check-ins", |
| 885 | "g", "Tags", |
| 886 | "e", "Tech Notes", |
| 887 | "t", "Tickets", |
| 888 | "w", "Wiki" |
| 889 | }; |
| 890 |