Fossil SCM

For checkins that are a cherrypick or that are cherrypicked, so the other side of the cherrypick merge in the "Context" section of the /info page. This enhancement requires a "fossil rebuild" in order to function.

drh 2018-12-26 23:38 trunk
Commit 1c74e914e60cb0249e1716a71a7e931085476edc9b6b88e130a149b913ff6b94
+18
--- src/info.c
+++ src/info.c
@@ -267,10 +267,19 @@
267267
);
268268
if( !parentsOnly ){
269269
db_multi_exec(
270270
"INSERT OR IGNORE INTO ok SELECT cid FROM plink WHERE pid=%d;", rid
271271
);
272
+ if( db_table_exists("repository","cherrypick") ){
273
+ db_multi_exec(
274
+ "INSERT OR IGNORE INTO ok "
275
+ " SELECT parentid FROM cherrypick WHERE childid=%d;"
276
+ "INSERT OR IGNORE INTO ok "
277
+ " SELECT childid FROM cherrypick WHERE parentid=%d;",
278
+ rid, rid
279
+ );
280
+ }
272281
}
273282
blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
274283
db_prepare(&q, "%s", blob_sql_text(&sql));
275284
www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH|TIMELINE_NOSCROLL,
276285
0, 0, rid, 0);
@@ -599,10 +608,19 @@
599608
" (SELECT uuid FROM blob WHERE rid=tagxref.origid AND rid!=%d)"
600609
" FROM tagxref JOIN tag ON tagxref.tagid=tag.tagid"
601610
" WHERE tagxref.rid=%d"
602611
" ORDER BY tagname /*sort*/", rid, rid, rid
603612
);
613
+ if( db_table_exists("repository","cherrypick") ){
614
+ db_multi_exec(
615
+ "INSERT OR IGNORE INTO ok "
616
+ " SELECT parentid FROM cherrypick WHERE childid=%d;"
617
+ "INSERT OR IGNORE INTO ok "
618
+ " SELECT childid FROM cherrypick WHERE parentid=%d;",
619
+ rid, rid
620
+ );
621
+ }
604622
blob_zero(&sql);
605623
blob_append(&sql, timeline_query_for_www(), -1);
606624
blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
607625
db_prepare(&q, "%s", blob_sql_text(&sql));
608626
www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH|TIMELINE_NOSCROLL,
609627
--- src/info.c
+++ src/info.c
@@ -267,10 +267,19 @@
267 );
268 if( !parentsOnly ){
269 db_multi_exec(
270 "INSERT OR IGNORE INTO ok SELECT cid FROM plink WHERE pid=%d;", rid
271 );
 
 
 
 
 
 
 
 
 
272 }
273 blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
274 db_prepare(&q, "%s", blob_sql_text(&sql));
275 www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH|TIMELINE_NOSCROLL,
276 0, 0, rid, 0);
@@ -599,10 +608,19 @@
599 " (SELECT uuid FROM blob WHERE rid=tagxref.origid AND rid!=%d)"
600 " FROM tagxref JOIN tag ON tagxref.tagid=tag.tagid"
601 " WHERE tagxref.rid=%d"
602 " ORDER BY tagname /*sort*/", rid, rid, rid
603 );
 
 
 
 
 
 
 
 
 
604 blob_zero(&sql);
605 blob_append(&sql, timeline_query_for_www(), -1);
606 blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
607 db_prepare(&q, "%s", blob_sql_text(&sql));
608 www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH|TIMELINE_NOSCROLL,
609
--- src/info.c
+++ src/info.c
@@ -267,10 +267,19 @@
267 );
268 if( !parentsOnly ){
269 db_multi_exec(
270 "INSERT OR IGNORE INTO ok SELECT cid FROM plink WHERE pid=%d;", rid
271 );
272 if( db_table_exists("repository","cherrypick") ){
273 db_multi_exec(
274 "INSERT OR IGNORE INTO ok "
275 " SELECT parentid FROM cherrypick WHERE childid=%d;"
276 "INSERT OR IGNORE INTO ok "
277 " SELECT childid FROM cherrypick WHERE parentid=%d;",
278 rid, rid
279 );
280 }
281 }
282 blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
283 db_prepare(&q, "%s", blob_sql_text(&sql));
284 www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH|TIMELINE_NOSCROLL,
285 0, 0, rid, 0);
@@ -599,10 +608,19 @@
608 " (SELECT uuid FROM blob WHERE rid=tagxref.origid AND rid!=%d)"
609 " FROM tagxref JOIN tag ON tagxref.tagid=tag.tagid"
610 " WHERE tagxref.rid=%d"
611 " ORDER BY tagname /*sort*/", rid, rid, rid
612 );
613 if( db_table_exists("repository","cherrypick") ){
614 db_multi_exec(
615 "INSERT OR IGNORE INTO ok "
616 " SELECT parentid FROM cherrypick WHERE childid=%d;"
617 "INSERT OR IGNORE INTO ok "
618 " SELECT childid FROM cherrypick WHERE parentid=%d;",
619 rid, rid
620 );
621 }
622 blob_zero(&sql);
623 blob_append(&sql, timeline_query_for_www(), -1);
624 blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
625 db_prepare(&q, "%s", blob_sql_text(&sql));
626 www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH|TIMELINE_NOSCROLL,
627
--- src/manifest.c
+++ src/manifest.c
@@ -2104,10 +2104,21 @@
21042104
db_begin_transaction();
21052105
if( p->type==CFTYPE_MANIFEST ){
21062106
if( permitHooks ){
21072107
zScript = xfer_commit_code();
21082108
zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
2109
+ }
2110
+ if( p->nCherrypick && db_table_exists("repository","cherrypick") ){
2111
+ int i;
2112
+ for(i=0; i<p->nCherrypick; i++){
2113
+ db_multi_exec(
2114
+ "REPLACE INTO cherrypick(parentid,childid,isExclude)"
2115
+ " SELECT rid, %d, %d FROM blob WHERE uuid=%Q",
2116
+ rid, p->aCherrypick[i].zCPTarget[0]=='-',
2117
+ p->aCherrypick[i].zCPTarget+1
2118
+ );
2119
+ }
21092120
}
21102121
if( !db_exists("SELECT 1 FROM mlink WHERE mid=%d", rid) ){
21112122
char *zCom;
21122123
parentid = manifest_add_checkin_linkages(rid,p,p->nParent,p->azParent);
21132124
search_doc_touch('c', rid, 0);
21142125
--- src/manifest.c
+++ src/manifest.c
@@ -2104,10 +2104,21 @@
2104 db_begin_transaction();
2105 if( p->type==CFTYPE_MANIFEST ){
2106 if( permitHooks ){
2107 zScript = xfer_commit_code();
2108 zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
 
 
 
 
 
 
 
 
 
 
 
2109 }
2110 if( !db_exists("SELECT 1 FROM mlink WHERE mid=%d", rid) ){
2111 char *zCom;
2112 parentid = manifest_add_checkin_linkages(rid,p,p->nParent,p->azParent);
2113 search_doc_touch('c', rid, 0);
2114
--- src/manifest.c
+++ src/manifest.c
@@ -2104,10 +2104,21 @@
2104 db_begin_transaction();
2105 if( p->type==CFTYPE_MANIFEST ){
2106 if( permitHooks ){
2107 zScript = xfer_commit_code();
2108 zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
2109 }
2110 if( p->nCherrypick && db_table_exists("repository","cherrypick") ){
2111 int i;
2112 for(i=0; i<p->nCherrypick; i++){
2113 db_multi_exec(
2114 "REPLACE INTO cherrypick(parentid,childid,isExclude)"
2115 " SELECT rid, %d, %d FROM blob WHERE uuid=%Q",
2116 rid, p->aCherrypick[i].zCPTarget[0]=='-',
2117 p->aCherrypick[i].zCPTarget+1
2118 );
2119 }
2120 }
2121 if( !db_exists("SELECT 1 FROM mlink WHERE mid=%d", rid) ){
2122 char *zCom;
2123 parentid = manifest_add_checkin_linkages(rid,p,p->nParent,p->azParent);
2124 search_doc_touch('c', rid, 0);
2125
--- src/schema.c
+++ src/schema.c
@@ -459,10 +459,19 @@
459459
@ username TEXT,
460460
@ mimetype TEXT,
461461
@ icomment TEXT
462462
@ );
463463
@ CREATE INDEX ticketchng_idx1 ON ticketchng(tkt_id, tkt_mtime);
464
+@
465
+@ -- For tracking cherrypick merges
466
+@ CREATE TABLE cherrypick(
467
+@ parentid INT,
468
+@ childid INT,
469
+@ isExclude BOOLEAN DEFAULT false,
470
+@ PRIMARY KEY(parentid, childid)
471
+@ ) WITHOUT ROWID;
472
+@ CREATE INDEX cherrypick_cid ON cherrypick(childid);
464473
;
465474
466475
/*
467476
** Predefined tagid values
468477
*/
469478
--- src/schema.c
+++ src/schema.c
@@ -459,10 +459,19 @@
459 @ username TEXT,
460 @ mimetype TEXT,
461 @ icomment TEXT
462 @ );
463 @ CREATE INDEX ticketchng_idx1 ON ticketchng(tkt_id, tkt_mtime);
 
 
 
 
 
 
 
 
 
464 ;
465
466 /*
467 ** Predefined tagid values
468 */
469
--- src/schema.c
+++ src/schema.c
@@ -459,10 +459,19 @@
459 @ username TEXT,
460 @ mimetype TEXT,
461 @ icomment TEXT
462 @ );
463 @ CREATE INDEX ticketchng_idx1 ON ticketchng(tkt_id, tkt_mtime);
464 @
465 @ -- For tracking cherrypick merges
466 @ CREATE TABLE cherrypick(
467 @ parentid INT,
468 @ childid INT,
469 @ isExclude BOOLEAN DEFAULT false,
470 @ PRIMARY KEY(parentid, childid)
471 @ ) WITHOUT ROWID;
472 @ CREATE INDEX cherrypick_cid ON cherrypick(childid);
473 ;
474
475 /*
476 ** Predefined tagid values
477 */
478

Keyboard Shortcuts

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