Fossil SCM

Add the "forks" query parameter to the /timeline webpage, causing the timeline to show only check-ins associated with a fork.

drh 2015-04-26 18:06 trunk
Commit ba2ec88b749a7655f02e40a05fa11675b5f02a4a
1 file changed +30 -1
+30 -1
--- src/timeline.c
+++ src/timeline.c
@@ -352,11 +352,11 @@
352352
}else if( rid==vid ){
353353
@ <tr class="timelineCurrent">
354354
}else {
355355
@ <tr>
356356
}
357
- zDateLink = href("%R/timeline?c=%!S", zUuid);
357
+ zDateLink = href("%R/timeline?c=%!S&unhide", zUuid);
358358
@ <td class="timelineTime">%z(zDateLink)%s(zTime)</a></td>
359359
@ <td class="timelineGraph">
360360
if( tmFlags & TIMELINE_UCOLOR ) zBgClr = zUser ? hash_color(zUser) : 0;
361361
if( zType[0]=='c'
362362
&& (pGraph || zBgClr==0 || (tmFlags & TIMELINE_BRCOLOR)!=0)
@@ -1217,10 +1217,11 @@
12171217
** shortest ... show only the shortest path
12181218
** uf=FUUID Show only check-ins that use given file version
12191219
** brbg Background color from branch name
12201220
** ubg Background color from user
12211221
** namechng Show only check-ins that filename changes
1222
+** forks Show only forks and their children
12221223
** ym=YYYY-MM Shown only events for the given year/month.
12231224
** datefmt=N Override the date format
12241225
**
12251226
** p= and d= can appear individually or together. If either p= or d=
12261227
** appear, then u=, y=, a=, and b= are ignored.
@@ -1250,10 +1251,11 @@
12501251
const char *zUses = P("uf"); /* Only show check-ins hold this file */
12511252
const char *zYearMonth = P("ym"); /* Show check-ins for the given YYYY-MM */
12521253
const char *zYearWeek = P("yw"); /* Check-ins for YYYY-WW (week-of-year) */
12531254
int useDividers = P("nd")==0; /* Show dividers if "nd" is missing */
12541255
int renameOnly = P("namechng")!=0; /* Show only check-ins that rename files */
1256
+ int forkOnly = PB("forks"); /* Show only forks and their children */
12551257
int tagid; /* Tag ID */
12561258
int tmFlags = 0; /* Timeline flags */
12571259
const char *zThisTag = 0; /* Suppress links to this tag */
12581260
const char *zThisUser = 0; /* Suppress links to this user */
12591261
HQuery url; /* URL for various branch links */
@@ -1356,10 +1358,30 @@
13561358
"CREATE TEMP TABLE rnfile(rid INTEGER PRIMARY KEY);"
13571359
"INSERT OR IGNORE INTO rnfile"
13581360
" SELECT mid FROM mlink WHERE pfnid>0 AND pfnid!=fnid;"
13591361
);
13601362
disableY = 1;
1363
+ }
1364
+ if( forkOnly ){
1365
+ db_multi_exec(
1366
+ "CREATE TEMP TABLE rnfork(rid INTEGER PRIMARY KEY);\n"
1367
+ "INSERT OR IGNORE INTO rnfork(rid)\n"
1368
+ " SELECT pid FROM plink\n"
1369
+ " WHERE (SELECT value FROM tagxref WHERE tagid=%d AND rid=cid)=="
1370
+ " (SELECT value FROM tagxref WHERE tagid=%d AND rid=pid)\n"
1371
+ " GROUP BY pid"
1372
+ " HAVING count(*)>1;\n"
1373
+ "INSERT OR IGNORE INTO rnfork(rid)"
1374
+ " SELECT cid FROM plink\n"
1375
+ " WHERE (SELECT value FROM tagxref WHERE tagid=%d AND rid=cid)=="
1376
+ " (SELECT value FROM tagxref WHERE tagid=%d AND rid=pid)\n"
1377
+ " AND pid IN rnfork;",
1378
+ TAG_BRANCH, TAG_BRANCH, TAG_BRANCH, TAG_BRANCH
1379
+ );
1380
+ tmFlags |= TIMELINE_UNHIDE;
1381
+ zType = "ci";
1382
+ disableY = 1;
13611383
}
13621384
13631385
style_header("Timeline");
13641386
login_anonymous_available();
13651387
timeline_temp_table();
@@ -1486,10 +1508,13 @@
14861508
blob_append_sql(&sql, " AND event.objid IN usesfile ");
14871509
}
14881510
if( renameOnly ){
14891511
blob_append_sql(&sql, " AND event.objid IN rnfile ");
14901512
}
1513
+ if( forkOnly ){
1514
+ blob_append_sql(&sql, " AND event.objid IN rnfork ");
1515
+ }
14911516
if( zYearMonth ){
14921517
blob_append_sql(&sql, " AND %Q=strftime('%%Y-%%m',event.mtime) ",
14931518
zYearMonth);
14941519
}
14951520
else if( zYearWeek ){
@@ -1658,10 +1683,14 @@
16581683
}
16591684
if( renameOnly ){
16601685
blob_appendf(&desc, " that contain filename changes");
16611686
tmFlags |= TIMELINE_DISJOINT|TIMELINE_FRENAMES;
16621687
}
1688
+ if( forkOnly ){
1689
+ blob_appendf(&desc, " associated with forks");
1690
+ tmFlags |= TIMELINE_DISJOINT;
1691
+ }
16631692
if( zUser ){
16641693
blob_appendf(&desc, " by user %h", zUser);
16651694
tmFlags |= TIMELINE_DISJOINT;
16661695
}
16671696
if( zTagName ){
16681697
--- src/timeline.c
+++ src/timeline.c
@@ -352,11 +352,11 @@
352 }else if( rid==vid ){
353 @ <tr class="timelineCurrent">
354 }else {
355 @ <tr>
356 }
357 zDateLink = href("%R/timeline?c=%!S", zUuid);
358 @ <td class="timelineTime">%z(zDateLink)%s(zTime)</a></td>
359 @ <td class="timelineGraph">
360 if( tmFlags & TIMELINE_UCOLOR ) zBgClr = zUser ? hash_color(zUser) : 0;
361 if( zType[0]=='c'
362 && (pGraph || zBgClr==0 || (tmFlags & TIMELINE_BRCOLOR)!=0)
@@ -1217,10 +1217,11 @@
1217 ** shortest ... show only the shortest path
1218 ** uf=FUUID Show only check-ins that use given file version
1219 ** brbg Background color from branch name
1220 ** ubg Background color from user
1221 ** namechng Show only check-ins that filename changes
 
1222 ** ym=YYYY-MM Shown only events for the given year/month.
1223 ** datefmt=N Override the date format
1224 **
1225 ** p= and d= can appear individually or together. If either p= or d=
1226 ** appear, then u=, y=, a=, and b= are ignored.
@@ -1250,10 +1251,11 @@
1250 const char *zUses = P("uf"); /* Only show check-ins hold this file */
1251 const char *zYearMonth = P("ym"); /* Show check-ins for the given YYYY-MM */
1252 const char *zYearWeek = P("yw"); /* Check-ins for YYYY-WW (week-of-year) */
1253 int useDividers = P("nd")==0; /* Show dividers if "nd" is missing */
1254 int renameOnly = P("namechng")!=0; /* Show only check-ins that rename files */
 
1255 int tagid; /* Tag ID */
1256 int tmFlags = 0; /* Timeline flags */
1257 const char *zThisTag = 0; /* Suppress links to this tag */
1258 const char *zThisUser = 0; /* Suppress links to this user */
1259 HQuery url; /* URL for various branch links */
@@ -1356,10 +1358,30 @@
1356 "CREATE TEMP TABLE rnfile(rid INTEGER PRIMARY KEY);"
1357 "INSERT OR IGNORE INTO rnfile"
1358 " SELECT mid FROM mlink WHERE pfnid>0 AND pfnid!=fnid;"
1359 );
1360 disableY = 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1361 }
1362
1363 style_header("Timeline");
1364 login_anonymous_available();
1365 timeline_temp_table();
@@ -1486,10 +1508,13 @@
1486 blob_append_sql(&sql, " AND event.objid IN usesfile ");
1487 }
1488 if( renameOnly ){
1489 blob_append_sql(&sql, " AND event.objid IN rnfile ");
1490 }
 
 
 
1491 if( zYearMonth ){
1492 blob_append_sql(&sql, " AND %Q=strftime('%%Y-%%m',event.mtime) ",
1493 zYearMonth);
1494 }
1495 else if( zYearWeek ){
@@ -1658,10 +1683,14 @@
1658 }
1659 if( renameOnly ){
1660 blob_appendf(&desc, " that contain filename changes");
1661 tmFlags |= TIMELINE_DISJOINT|TIMELINE_FRENAMES;
1662 }
 
 
 
 
1663 if( zUser ){
1664 blob_appendf(&desc, " by user %h", zUser);
1665 tmFlags |= TIMELINE_DISJOINT;
1666 }
1667 if( zTagName ){
1668
--- src/timeline.c
+++ src/timeline.c
@@ -352,11 +352,11 @@
352 }else if( rid==vid ){
353 @ <tr class="timelineCurrent">
354 }else {
355 @ <tr>
356 }
357 zDateLink = href("%R/timeline?c=%!S&unhide", zUuid);
358 @ <td class="timelineTime">%z(zDateLink)%s(zTime)</a></td>
359 @ <td class="timelineGraph">
360 if( tmFlags & TIMELINE_UCOLOR ) zBgClr = zUser ? hash_color(zUser) : 0;
361 if( zType[0]=='c'
362 && (pGraph || zBgClr==0 || (tmFlags & TIMELINE_BRCOLOR)!=0)
@@ -1217,10 +1217,11 @@
1217 ** shortest ... show only the shortest path
1218 ** uf=FUUID Show only check-ins that use given file version
1219 ** brbg Background color from branch name
1220 ** ubg Background color from user
1221 ** namechng Show only check-ins that filename changes
1222 ** forks Show only forks and their children
1223 ** ym=YYYY-MM Shown only events for the given year/month.
1224 ** datefmt=N Override the date format
1225 **
1226 ** p= and d= can appear individually or together. If either p= or d=
1227 ** appear, then u=, y=, a=, and b= are ignored.
@@ -1250,10 +1251,11 @@
1251 const char *zUses = P("uf"); /* Only show check-ins hold this file */
1252 const char *zYearMonth = P("ym"); /* Show check-ins for the given YYYY-MM */
1253 const char *zYearWeek = P("yw"); /* Check-ins for YYYY-WW (week-of-year) */
1254 int useDividers = P("nd")==0; /* Show dividers if "nd" is missing */
1255 int renameOnly = P("namechng")!=0; /* Show only check-ins that rename files */
1256 int forkOnly = PB("forks"); /* Show only forks and their children */
1257 int tagid; /* Tag ID */
1258 int tmFlags = 0; /* Timeline flags */
1259 const char *zThisTag = 0; /* Suppress links to this tag */
1260 const char *zThisUser = 0; /* Suppress links to this user */
1261 HQuery url; /* URL for various branch links */
@@ -1356,10 +1358,30 @@
1358 "CREATE TEMP TABLE rnfile(rid INTEGER PRIMARY KEY);"
1359 "INSERT OR IGNORE INTO rnfile"
1360 " SELECT mid FROM mlink WHERE pfnid>0 AND pfnid!=fnid;"
1361 );
1362 disableY = 1;
1363 }
1364 if( forkOnly ){
1365 db_multi_exec(
1366 "CREATE TEMP TABLE rnfork(rid INTEGER PRIMARY KEY);\n"
1367 "INSERT OR IGNORE INTO rnfork(rid)\n"
1368 " SELECT pid FROM plink\n"
1369 " WHERE (SELECT value FROM tagxref WHERE tagid=%d AND rid=cid)=="
1370 " (SELECT value FROM tagxref WHERE tagid=%d AND rid=pid)\n"
1371 " GROUP BY pid"
1372 " HAVING count(*)>1;\n"
1373 "INSERT OR IGNORE INTO rnfork(rid)"
1374 " SELECT cid FROM plink\n"
1375 " WHERE (SELECT value FROM tagxref WHERE tagid=%d AND rid=cid)=="
1376 " (SELECT value FROM tagxref WHERE tagid=%d AND rid=pid)\n"
1377 " AND pid IN rnfork;",
1378 TAG_BRANCH, TAG_BRANCH, TAG_BRANCH, TAG_BRANCH
1379 );
1380 tmFlags |= TIMELINE_UNHIDE;
1381 zType = "ci";
1382 disableY = 1;
1383 }
1384
1385 style_header("Timeline");
1386 login_anonymous_available();
1387 timeline_temp_table();
@@ -1486,10 +1508,13 @@
1508 blob_append_sql(&sql, " AND event.objid IN usesfile ");
1509 }
1510 if( renameOnly ){
1511 blob_append_sql(&sql, " AND event.objid IN rnfile ");
1512 }
1513 if( forkOnly ){
1514 blob_append_sql(&sql, " AND event.objid IN rnfork ");
1515 }
1516 if( zYearMonth ){
1517 blob_append_sql(&sql, " AND %Q=strftime('%%Y-%%m',event.mtime) ",
1518 zYearMonth);
1519 }
1520 else if( zYearWeek ){
@@ -1658,10 +1683,14 @@
1683 }
1684 if( renameOnly ){
1685 blob_appendf(&desc, " that contain filename changes");
1686 tmFlags |= TIMELINE_DISJOINT|TIMELINE_FRENAMES;
1687 }
1688 if( forkOnly ){
1689 blob_appendf(&desc, " associated with forks");
1690 tmFlags |= TIMELINE_DISJOINT;
1691 }
1692 if( zUser ){
1693 blob_appendf(&desc, " by user %h", zUser);
1694 tmFlags |= TIMELINE_DISJOINT;
1695 }
1696 if( zTagName ){
1697

Keyboard Shortcuts

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