Fossil SCM
In the /timeline, the t=TAG and m=HASH options can be used together and both all TAGs and the HASH will both be shown. Useful to get context of an historical checkin X relative to releases using "m=X&t=release".
Commit
03f7bcb46304d0b96f7d23b2e7399d3aaf00f5b499e72615e9d5675a9f9b98e7
Parent
92fe4a5441ee3d1…
1 file changed
+8
+8
| --- src/timeline.c | ||
| +++ src/timeline.c | ||
| @@ -2201,10 +2201,15 @@ | ||
| 2201 | 2201 | "CREATE TEMP TABLE selected_nodes(rid INTEGER PRIMARY KEY);" |
| 2202 | 2202 | "INSERT OR IGNORE INTO selected_nodes" |
| 2203 | 2203 | " SELECT tagxref.rid FROM tagxref NATURAL JOIN tag" |
| 2204 | 2204 | " WHERE %s AND tagtype>0", zTagSql/*safe-for-%s*/ |
| 2205 | 2205 | ); |
| 2206 | + if( zMark ){ | |
| 2207 | + int ridMark = name_to_rid(zMark); | |
| 2208 | + db_multi_exec( | |
| 2209 | + "INSERT OR IGNORE INTO selected_nodes(rid) VALUES(%d)", ridMark); | |
| 2210 | + } | |
| 2206 | 2211 | if( !related ){ |
| 2207 | 2212 | blob_append_sql(&cond, " AND blob.rid IN selected_nodes"); |
| 2208 | 2213 | }else{ |
| 2209 | 2214 | db_multi_exec( |
| 2210 | 2215 | "CREATE TEMP TABLE related_nodes(rid INTEGER PRIMARY KEY);" |
| @@ -2427,10 +2432,13 @@ | ||
| 2427 | 2432 | blob_appendf(&desc, " related to tags matching %h", zMatchDesc); |
| 2428 | 2433 | }else{ |
| 2429 | 2434 | blob_appendf(&desc, " with tags matching %h", zMatchDesc); |
| 2430 | 2435 | } |
| 2431 | 2436 | } |
| 2437 | + if( zMark ){ | |
| 2438 | + blob_appendf(&desc," plus check-in \"%h\"", zMark); | |
| 2439 | + } | |
| 2432 | 2440 | tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS; |
| 2433 | 2441 | } |
| 2434 | 2442 | addFileGlobDescription(zChng, &desc); |
| 2435 | 2443 | if( rAfter>0.0 ){ |
| 2436 | 2444 | if( rBefore>0.0 ){ |
| 2437 | 2445 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -2201,10 +2201,15 @@ | |
| 2201 | "CREATE TEMP TABLE selected_nodes(rid INTEGER PRIMARY KEY);" |
| 2202 | "INSERT OR IGNORE INTO selected_nodes" |
| 2203 | " SELECT tagxref.rid FROM tagxref NATURAL JOIN tag" |
| 2204 | " WHERE %s AND tagtype>0", zTagSql/*safe-for-%s*/ |
| 2205 | ); |
| 2206 | if( !related ){ |
| 2207 | blob_append_sql(&cond, " AND blob.rid IN selected_nodes"); |
| 2208 | }else{ |
| 2209 | db_multi_exec( |
| 2210 | "CREATE TEMP TABLE related_nodes(rid INTEGER PRIMARY KEY);" |
| @@ -2427,10 +2432,13 @@ | |
| 2427 | blob_appendf(&desc, " related to tags matching %h", zMatchDesc); |
| 2428 | }else{ |
| 2429 | blob_appendf(&desc, " with tags matching %h", zMatchDesc); |
| 2430 | } |
| 2431 | } |
| 2432 | tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS; |
| 2433 | } |
| 2434 | addFileGlobDescription(zChng, &desc); |
| 2435 | if( rAfter>0.0 ){ |
| 2436 | if( rBefore>0.0 ){ |
| 2437 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -2201,10 +2201,15 @@ | |
| 2201 | "CREATE TEMP TABLE selected_nodes(rid INTEGER PRIMARY KEY);" |
| 2202 | "INSERT OR IGNORE INTO selected_nodes" |
| 2203 | " SELECT tagxref.rid FROM tagxref NATURAL JOIN tag" |
| 2204 | " WHERE %s AND tagtype>0", zTagSql/*safe-for-%s*/ |
| 2205 | ); |
| 2206 | if( zMark ){ |
| 2207 | int ridMark = name_to_rid(zMark); |
| 2208 | db_multi_exec( |
| 2209 | "INSERT OR IGNORE INTO selected_nodes(rid) VALUES(%d)", ridMark); |
| 2210 | } |
| 2211 | if( !related ){ |
| 2212 | blob_append_sql(&cond, " AND blob.rid IN selected_nodes"); |
| 2213 | }else{ |
| 2214 | db_multi_exec( |
| 2215 | "CREATE TEMP TABLE related_nodes(rid INTEGER PRIMARY KEY);" |
| @@ -2427,10 +2432,13 @@ | |
| 2432 | blob_appendf(&desc, " related to tags matching %h", zMatchDesc); |
| 2433 | }else{ |
| 2434 | blob_appendf(&desc, " with tags matching %h", zMatchDesc); |
| 2435 | } |
| 2436 | } |
| 2437 | if( zMark ){ |
| 2438 | blob_appendf(&desc," plus check-in \"%h\"", zMark); |
| 2439 | } |
| 2440 | tmFlags |= TIMELINE_XMERGE | TIMELINE_FILLGAPS; |
| 2441 | } |
| 2442 | addFileGlobDescription(zChng, &desc); |
| 2443 | if( rAfter>0.0 ){ |
| 2444 | if( rBefore>0.0 ){ |
| 2445 |