Fossil SCM
Record cherrypicks and backouts in the Q card of the check-in manifest. This is the first step in adding display of cherry-picks, ticket [eaf1c4fdbeeca8eb].
Commit
91aa222d7f2a874663dcff6fe33d46d3326f7cbf
Parent
3c781f4f0b6df25…
2 files changed
+15
-3
+5
-2
+15
-3
| --- src/checkin.c | ||
| +++ src/checkin.c | ||
| @@ -104,12 +104,12 @@ | ||
| 104 | 104 | db_prepare(&q, "SELECT uuid, id FROM vmerge JOIN blob ON merge=rid" |
| 105 | 105 | " WHERE id<=0"); |
| 106 | 106 | while( db_step(&q)==SQLITE_ROW ){ |
| 107 | 107 | const char *zLabel = "MERGED_WITH"; |
| 108 | 108 | switch( db_column_int(&q, 1) ){ |
| 109 | - case -1: zLabel = "CHERRYPICK "; break; | |
| 110 | - case -2: zLabel = "BACKOUT "; break; | |
| 109 | + case -1: zLabel = "CHERRYPICK"; break; | |
| 110 | + case -2: zLabel = "BACKOUT "; break; | |
| 111 | 111 | } |
| 112 | 112 | blob_append(report, zPrefix, nPrefix); |
| 113 | 113 | blob_appendf(report, "%s %s\n", zLabel, db_column_text(&q, 0)); |
| 114 | 114 | } |
| 115 | 115 | db_finalize(&q); |
| @@ -862,12 +862,24 @@ | ||
| 862 | 862 | free(zMergeUuid); |
| 863 | 863 | } |
| 864 | 864 | } |
| 865 | 865 | db_finalize(&q2); |
| 866 | 866 | free(zDate); |
| 867 | - | |
| 868 | 867 | blob_appendf(pOut, "\n"); |
| 868 | + | |
| 869 | + db_prepare(&q2, | |
| 870 | + "SELECT CASE vmerge.id WHEN -1 THEN '+' ELSE '-' END || blob.uuid" | |
| 871 | + " FROM vmerge, blob" | |
| 872 | + " WHERE vmerge.id<0" | |
| 873 | + " AND blob.rid=vmerge.merge" | |
| 874 | + " ORDER BY 1"); | |
| 875 | + while( db_step(&q2)==SQLITE_ROW ){ | |
| 876 | + const char *zCherrypickUuid = db_column_text(&q2, 0); | |
| 877 | + blob_appendf(pOut, "Q %s\n", zCherrypickUuid); | |
| 878 | + } | |
| 879 | + db_finalize(&q2); | |
| 880 | + | |
| 869 | 881 | if( p->pCksum ) blob_appendf(pOut, "R %b\n", p->pCksum); |
| 870 | 882 | zColor = p->zColor; |
| 871 | 883 | if( p->zBranch && p->zBranch[0] ){ |
| 872 | 884 | /* Set tags for the new branch */ |
| 873 | 885 | if( p->zBrClr && p->zBrClr[0] ){ |
| 874 | 886 |
| --- src/checkin.c | |
| +++ src/checkin.c | |
| @@ -104,12 +104,12 @@ | |
| 104 | db_prepare(&q, "SELECT uuid, id FROM vmerge JOIN blob ON merge=rid" |
| 105 | " WHERE id<=0"); |
| 106 | while( db_step(&q)==SQLITE_ROW ){ |
| 107 | const char *zLabel = "MERGED_WITH"; |
| 108 | switch( db_column_int(&q, 1) ){ |
| 109 | case -1: zLabel = "CHERRYPICK "; break; |
| 110 | case -2: zLabel = "BACKOUT "; break; |
| 111 | } |
| 112 | blob_append(report, zPrefix, nPrefix); |
| 113 | blob_appendf(report, "%s %s\n", zLabel, db_column_text(&q, 0)); |
| 114 | } |
| 115 | db_finalize(&q); |
| @@ -862,12 +862,24 @@ | |
| 862 | free(zMergeUuid); |
| 863 | } |
| 864 | } |
| 865 | db_finalize(&q2); |
| 866 | free(zDate); |
| 867 | |
| 868 | blob_appendf(pOut, "\n"); |
| 869 | if( p->pCksum ) blob_appendf(pOut, "R %b\n", p->pCksum); |
| 870 | zColor = p->zColor; |
| 871 | if( p->zBranch && p->zBranch[0] ){ |
| 872 | /* Set tags for the new branch */ |
| 873 | if( p->zBrClr && p->zBrClr[0] ){ |
| 874 |
| --- src/checkin.c | |
| +++ src/checkin.c | |
| @@ -104,12 +104,12 @@ | |
| 104 | db_prepare(&q, "SELECT uuid, id FROM vmerge JOIN blob ON merge=rid" |
| 105 | " WHERE id<=0"); |
| 106 | while( db_step(&q)==SQLITE_ROW ){ |
| 107 | const char *zLabel = "MERGED_WITH"; |
| 108 | switch( db_column_int(&q, 1) ){ |
| 109 | case -1: zLabel = "CHERRYPICK"; break; |
| 110 | case -2: zLabel = "BACKOUT "; break; |
| 111 | } |
| 112 | blob_append(report, zPrefix, nPrefix); |
| 113 | blob_appendf(report, "%s %s\n", zLabel, db_column_text(&q, 0)); |
| 114 | } |
| 115 | db_finalize(&q); |
| @@ -862,12 +862,24 @@ | |
| 862 | free(zMergeUuid); |
| 863 | } |
| 864 | } |
| 865 | db_finalize(&q2); |
| 866 | free(zDate); |
| 867 | blob_appendf(pOut, "\n"); |
| 868 | |
| 869 | db_prepare(&q2, |
| 870 | "SELECT CASE vmerge.id WHEN -1 THEN '+' ELSE '-' END || blob.uuid" |
| 871 | " FROM vmerge, blob" |
| 872 | " WHERE vmerge.id<0" |
| 873 | " AND blob.rid=vmerge.merge" |
| 874 | " ORDER BY 1"); |
| 875 | while( db_step(&q2)==SQLITE_ROW ){ |
| 876 | const char *zCherrypickUuid = db_column_text(&q2, 0); |
| 877 | blob_appendf(pOut, "Q %s\n", zCherrypickUuid); |
| 878 | } |
| 879 | db_finalize(&q2); |
| 880 | |
| 881 | if( p->pCksum ) blob_appendf(pOut, "R %b\n", p->pCksum); |
| 882 | zColor = p->zColor; |
| 883 | if( p->zBranch && p->zBranch[0] ){ |
| 884 | /* Set tags for the new branch */ |
| 885 | if( p->zBrClr && p->zBrClr[0] ){ |
| 886 |
+5
-2
| --- src/merge.c | ||
| +++ src/merge.c | ||
| @@ -627,20 +627,23 @@ | ||
| 627 | 627 | |
| 628 | 628 | /* |
| 629 | 629 | ** Clean up the mid and pid VFILE entries. Then commit the changes. |
| 630 | 630 | */ |
| 631 | 631 | db_multi_exec("DELETE FROM vfile WHERE vid!=%d", vid); |
| 632 | - db_multi_exec("INSERT OR IGNORE INTO vmerge(id,merge) VALUES(%d,%d)", | |
| 633 | - pickFlag ? -1 : (backoutFlag ? -2 : 0), mid); | |
| 634 | 632 | if( pickFlag ){ |
| 633 | + db_multi_exec("INSERT OR IGNORE INTO vmerge(id,merge) VALUES(-1,%d)",mid); | |
| 635 | 634 | /* For a cherry-pick merge, make the default check-in comment the same |
| 636 | 635 | ** as the check-in comment on the check-in that is being merged in. */ |
| 637 | 636 | db_multi_exec( |
| 638 | 637 | "REPLACE INTO vvar(name,value)" |
| 639 | 638 | " SELECT 'ci-comment', coalesce(ecomment,comment) FROM event" |
| 640 | 639 | " WHERE type='ci' AND objid=%d", |
| 641 | 640 | mid |
| 642 | 641 | ); |
| 642 | + }else if( backoutFlag ){ | |
| 643 | + db_multi_exec("INSERT OR IGNORE INTO vmerge(id,merge) VALUES(-2,%d)",pid); | |
| 644 | + }else{ | |
| 645 | + db_multi_exec("INSERT OR IGNORE INTO vmerge(id,merge) VALUES(0,%d)", mid); | |
| 643 | 646 | } |
| 644 | 647 | undo_finish(); |
| 645 | 648 | db_end_transaction(nochangeFlag); |
| 646 | 649 | } |
| 647 | 650 |
| --- src/merge.c | |
| +++ src/merge.c | |
| @@ -627,20 +627,23 @@ | |
| 627 | |
| 628 | /* |
| 629 | ** Clean up the mid and pid VFILE entries. Then commit the changes. |
| 630 | */ |
| 631 | db_multi_exec("DELETE FROM vfile WHERE vid!=%d", vid); |
| 632 | db_multi_exec("INSERT OR IGNORE INTO vmerge(id,merge) VALUES(%d,%d)", |
| 633 | pickFlag ? -1 : (backoutFlag ? -2 : 0), mid); |
| 634 | if( pickFlag ){ |
| 635 | /* For a cherry-pick merge, make the default check-in comment the same |
| 636 | ** as the check-in comment on the check-in that is being merged in. */ |
| 637 | db_multi_exec( |
| 638 | "REPLACE INTO vvar(name,value)" |
| 639 | " SELECT 'ci-comment', coalesce(ecomment,comment) FROM event" |
| 640 | " WHERE type='ci' AND objid=%d", |
| 641 | mid |
| 642 | ); |
| 643 | } |
| 644 | undo_finish(); |
| 645 | db_end_transaction(nochangeFlag); |
| 646 | } |
| 647 |
| --- src/merge.c | |
| +++ src/merge.c | |
| @@ -627,20 +627,23 @@ | |
| 627 | |
| 628 | /* |
| 629 | ** Clean up the mid and pid VFILE entries. Then commit the changes. |
| 630 | */ |
| 631 | db_multi_exec("DELETE FROM vfile WHERE vid!=%d", vid); |
| 632 | if( pickFlag ){ |
| 633 | db_multi_exec("INSERT OR IGNORE INTO vmerge(id,merge) VALUES(-1,%d)",mid); |
| 634 | /* For a cherry-pick merge, make the default check-in comment the same |
| 635 | ** as the check-in comment on the check-in that is being merged in. */ |
| 636 | db_multi_exec( |
| 637 | "REPLACE INTO vvar(name,value)" |
| 638 | " SELECT 'ci-comment', coalesce(ecomment,comment) FROM event" |
| 639 | " WHERE type='ci' AND objid=%d", |
| 640 | mid |
| 641 | ); |
| 642 | }else if( backoutFlag ){ |
| 643 | db_multi_exec("INSERT OR IGNORE INTO vmerge(id,merge) VALUES(-2,%d)",pid); |
| 644 | }else{ |
| 645 | db_multi_exec("INSERT OR IGNORE INTO vmerge(id,merge) VALUES(0,%d)", mid); |
| 646 | } |
| 647 | undo_finish(); |
| 648 | db_end_transaction(nochangeFlag); |
| 649 | } |
| 650 |