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].

drh 2013-04-18 18:53 trunk
Commit 91aa222d7f2a874663dcff6fe33d46d3326f7cbf
2 files changed +15 -3 +5 -2
+15 -3
--- src/checkin.c
+++ src/checkin.c
@@ -104,12 +104,12 @@
104104
db_prepare(&q, "SELECT uuid, id FROM vmerge JOIN blob ON merge=rid"
105105
" WHERE id<=0");
106106
while( db_step(&q)==SQLITE_ROW ){
107107
const char *zLabel = "MERGED_WITH";
108108
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;
111111
}
112112
blob_append(report, zPrefix, nPrefix);
113113
blob_appendf(report, "%s %s\n", zLabel, db_column_text(&q, 0));
114114
}
115115
db_finalize(&q);
@@ -862,12 +862,24 @@
862862
free(zMergeUuid);
863863
}
864864
}
865865
db_finalize(&q2);
866866
free(zDate);
867
-
868867
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
+
869881
if( p->pCksum ) blob_appendf(pOut, "R %b\n", p->pCksum);
870882
zColor = p->zColor;
871883
if( p->zBranch && p->zBranch[0] ){
872884
/* Set tags for the new branch */
873885
if( p->zBrClr && p->zBrClr[0] ){
874886
--- 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 @@
627627
628628
/*
629629
** Clean up the mid and pid VFILE entries. Then commit the changes.
630630
*/
631631
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);
634632
if( pickFlag ){
633
+ db_multi_exec("INSERT OR IGNORE INTO vmerge(id,merge) VALUES(-1,%d)",mid);
635634
/* For a cherry-pick merge, make the default check-in comment the same
636635
** as the check-in comment on the check-in that is being merged in. */
637636
db_multi_exec(
638637
"REPLACE INTO vvar(name,value)"
639638
" SELECT 'ci-comment', coalesce(ecomment,comment) FROM event"
640639
" WHERE type='ci' AND objid=%d",
641640
mid
642641
);
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);
643646
}
644647
undo_finish();
645648
db_end_transaction(nochangeFlag);
646649
}
647650
--- 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

Keyboard Shortcuts

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