Fossil SCM

Enhance the /reports page to show two new sub-types of activities: "Merge Check-ins" and "Non-merge Check-ins".

drh 2023-05-29 11:40 trunk
Commit 37a80fbfc71d741b9f4b6110062f04576507630f38d376eb3dc958350e368354
1 file changed +25 -4
+25 -4
--- src/statrep.c
+++ src/statrep.c
@@ -81,10 +81,20 @@
8181
case 'g':
8282
case 'G':
8383
zRealType = "g";
8484
rc = *zRealType;
8585
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;
8696
case 't':
8797
case 'T':
8898
zRealType = "t";
8999
rc = *zRealType;
90100
break;
@@ -103,19 +113,28 @@
103113
" (event.mtime BETWEEN julianday(%Q) AND julianday(%Q))",
104114
P("from"), P("to"));
105115
}else{
106116
zTimeSpan = " 1";
107117
}
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' ){
109123
statsReportTimelineYFlag = zRealType;
110124
db_multi_exec("CREATE TEMP VIEW v_reports AS "
111125
"SELECT * FROM event WHERE (type GLOB %Q) AND %s",
112126
zRealType, zTimeSpan/*safe-for-%s*/);
113127
}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
+ );
117136
}
118137
return statsReportType = rc;
119138
}
120139
121140
/*
@@ -859,10 +878,12 @@
859878
};
860879
static const char *const azType[] = {
861880
"a", "All Changes",
862881
"ci", "Check-ins",
863882
"f", "Forum Posts",
883
+ "m", "Merge check-ins",
884
+ "n", "Non-merge check-ins",
864885
"g", "Tags",
865886
"e", "Tech Notes",
866887
"t", "Tickets",
867888
"w", "Wiki"
868889
};
869890
--- 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

Keyboard Shortcuts

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