Fossil SCM

Make the distinction between open and closed branches. An open branch is a branch with one or more open leaves. Show open and closed branches separately on the "Branches" webpage.

drh 2009-01-23 23:57 trunk
Commit 9659ed66f83f895246b4f128e1dca1c6d5736cc0
1 file changed +41 -3
+41 -3
--- src/branch.c
+++ src/branch.c
@@ -220,32 +220,70 @@
220220
**
221221
** Show a timeline of all branches
222222
*/
223223
void brlist_page(void){
224224
Stmt q;
225
+ int cnt;
225226
226227
login_check_credentials();
227228
if( !g.okRead ){ login_needed(); return; }
228229
229230
style_header("Branches");
230231
style_submenu_element("Timeline", "Timeline", "brtimeline");
231232
login_anonymous_available();
232
- @ <h2>Branches:</h2>
233
- @ <ul>
233
+ compute_leaves(0, 1);
234234
db_prepare(&q,
235235
"SELECT DISTINCT value FROM tagxref"
236
- " WHERE tagid=%d AND srcid!=0 AND value NOT NULL"
236
+ " WHERE tagid=%d AND value NOT NULL"
237
+ " AND rid IN leaves"
237238
" ORDER BY value",
238239
TAG_BRANCH
239240
);
241
+ cnt = 0;
242
+ while( db_step(&q)==SQLITE_ROW ){
243
+ const char *zBr = db_column_text(&q, 0);
244
+ if( cnt==0 ){
245
+ @ <h2>Open Branches:</h2>
246
+ @ <ul>
247
+ cnt++;
248
+ }
249
+ if( g.okHistory ){
250
+ @ <li><a href="%s(g.zBaseURL)/timeline?t=%T(zBr)">%h(zBr)</a></li>
251
+ }else{
252
+ @ <li><b>%h(zBr)</b></li>
253
+ }
254
+ }
255
+ db_finalize(&q);
256
+ if( cnt ){
257
+ @ </ul>
258
+ }
259
+ cnt = 0;
260
+ db_prepare(&q,
261
+ "SELECT value FROM tagxref"
262
+ " WHERE tagid=%d AND value NOT NULL"
263
+ " EXCEPT "
264
+ "SELECT value FROM tagxref"
265
+ " WHERE tagid=%d AND value NOT NULL"
266
+ " AND rid IN leaves"
267
+ " ORDER BY value",
268
+ TAG_BRANCH, TAG_BRANCH
269
+ );
240270
while( db_step(&q)==SQLITE_ROW ){
241271
const char *zBr = db_column_text(&q, 0);
272
+ if( cnt==0 ){
273
+ @ <h2>Closed Branches:</h2>
274
+ @ <ul>
275
+ cnt++;
276
+ }
242277
if( g.okHistory ){
243278
@ <li><a href="%s(g.zBaseURL)/timeline?t=%T(zBr)">%h(zBr)</a></li>
244279
}else{
245280
@ <li><b>%h(zBr)</b></li>
246281
}
282
+ }
283
+ if( cnt ){
284
+ @ </ul>
247285
}
248286
db_finalize(&q);
249287
@ </ul>
250288
@ <br clear="both">
251289
@ <script>
252290
--- src/branch.c
+++ src/branch.c
@@ -220,32 +220,70 @@
220 **
221 ** Show a timeline of all branches
222 */
223 void brlist_page(void){
224 Stmt q;
 
225
226 login_check_credentials();
227 if( !g.okRead ){ login_needed(); return; }
228
229 style_header("Branches");
230 style_submenu_element("Timeline", "Timeline", "brtimeline");
231 login_anonymous_available();
232 @ <h2>Branches:</h2>
233 @ <ul>
234 db_prepare(&q,
235 "SELECT DISTINCT value FROM tagxref"
236 " WHERE tagid=%d AND srcid!=0 AND value NOT NULL"
 
237 " ORDER BY value",
238 TAG_BRANCH
239 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
240 while( db_step(&q)==SQLITE_ROW ){
241 const char *zBr = db_column_text(&q, 0);
 
 
 
 
 
242 if( g.okHistory ){
243 @ <li><a href="%s(g.zBaseURL)/timeline?t=%T(zBr)">%h(zBr)</a></li>
244 }else{
245 @ <li><b>%h(zBr)</b></li>
246 }
 
 
 
247 }
248 db_finalize(&q);
249 @ </ul>
250 @ <br clear="both">
251 @ <script>
252
--- src/branch.c
+++ src/branch.c
@@ -220,32 +220,70 @@
220 **
221 ** Show a timeline of all branches
222 */
223 void brlist_page(void){
224 Stmt q;
225 int cnt;
226
227 login_check_credentials();
228 if( !g.okRead ){ login_needed(); return; }
229
230 style_header("Branches");
231 style_submenu_element("Timeline", "Timeline", "brtimeline");
232 login_anonymous_available();
233 compute_leaves(0, 1);
 
234 db_prepare(&q,
235 "SELECT DISTINCT value FROM tagxref"
236 " WHERE tagid=%d AND value NOT NULL"
237 " AND rid IN leaves"
238 " ORDER BY value",
239 TAG_BRANCH
240 );
241 cnt = 0;
242 while( db_step(&q)==SQLITE_ROW ){
243 const char *zBr = db_column_text(&q, 0);
244 if( cnt==0 ){
245 @ <h2>Open Branches:</h2>
246 @ <ul>
247 cnt++;
248 }
249 if( g.okHistory ){
250 @ <li><a href="%s(g.zBaseURL)/timeline?t=%T(zBr)">%h(zBr)</a></li>
251 }else{
252 @ <li><b>%h(zBr)</b></li>
253 }
254 }
255 db_finalize(&q);
256 if( cnt ){
257 @ </ul>
258 }
259 cnt = 0;
260 db_prepare(&q,
261 "SELECT value FROM tagxref"
262 " WHERE tagid=%d AND value NOT NULL"
263 " EXCEPT "
264 "SELECT value FROM tagxref"
265 " WHERE tagid=%d AND value NOT NULL"
266 " AND rid IN leaves"
267 " ORDER BY value",
268 TAG_BRANCH, TAG_BRANCH
269 );
270 while( db_step(&q)==SQLITE_ROW ){
271 const char *zBr = db_column_text(&q, 0);
272 if( cnt==0 ){
273 @ <h2>Closed Branches:</h2>
274 @ <ul>
275 cnt++;
276 }
277 if( g.okHistory ){
278 @ <li><a href="%s(g.zBaseURL)/timeline?t=%T(zBr)">%h(zBr)</a></li>
279 }else{
280 @ <li><b>%h(zBr)</b></li>
281 }
282 }
283 if( cnt ){
284 @ </ul>
285 }
286 db_finalize(&q);
287 @ </ul>
288 @ <br clear="both">
289 @ <script>
290

Keyboard Shortcuts

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