Fossil SCM
Improvements to the fix for [0ff64b0a5fc88e7e]: (1) Better error message and (2) allow the partial commit of the renamed file as long as its destination files is also part of the partial commit.
Commit
c0fe455c78aa6b976a1b536fac58c2c87b399426
Parent
27298fffc87fe42…
1 file changed
+5
-4
+5
-4
| --- src/checkin.c | ||
| +++ src/checkin.c | ||
| @@ -1156,19 +1156,20 @@ | ||
| 1156 | 1156 | */ |
| 1157 | 1157 | if( g.aCommitFile ){ |
| 1158 | 1158 | Stmt qRename; |
| 1159 | 1159 | db_prepare(&qRename, |
| 1160 | 1160 | "SELECT v1.pathname, v2.pathname" |
| 1161 | - " FROM vfile AS v2 CROSS JOIN vfile AS v1" | |
| 1161 | + " FROM vfile AS v1, vfile AS v2" | |
| 1162 | 1162 | " WHERE is_selected(v1.id)" |
| 1163 | 1163 | " AND v2.origname IS NOT NULL" |
| 1164 | - " AND v2.origname=v1.pathname"); | |
| 1164 | + " AND v2.origname=v1.pathname" | |
| 1165 | + " AND NOT is_selected(v2.id)"); | |
| 1165 | 1166 | if( db_step(&qRename)==SQLITE_ROW ){ |
| 1166 | 1167 | const char *zFrom = db_column_text(&qRename, 0); |
| 1167 | 1168 | const char *zTo = db_column_text(&qRename, 1); |
| 1168 | - fossil_fatal("cannot do a partial commit of '%s' because " | |
| 1169 | - "'%s' was renamed to '%s'", zFrom, zFrom, zTo); | |
| 1169 | + fossil_fatal("cannot do a partial commit of '%s' without '%s' because " | |
| 1170 | + "'%s' was renamed to '%s'", zFrom, zTo, zFrom, zTo); | |
| 1170 | 1171 | } |
| 1171 | 1172 | db_finalize(&qRename); |
| 1172 | 1173 | } |
| 1173 | 1174 | |
| 1174 | 1175 | user_select(); |
| 1175 | 1176 |
| --- src/checkin.c | |
| +++ src/checkin.c | |
| @@ -1156,19 +1156,20 @@ | |
| 1156 | */ |
| 1157 | if( g.aCommitFile ){ |
| 1158 | Stmt qRename; |
| 1159 | db_prepare(&qRename, |
| 1160 | "SELECT v1.pathname, v2.pathname" |
| 1161 | " FROM vfile AS v2 CROSS JOIN vfile AS v1" |
| 1162 | " WHERE is_selected(v1.id)" |
| 1163 | " AND v2.origname IS NOT NULL" |
| 1164 | " AND v2.origname=v1.pathname"); |
| 1165 | if( db_step(&qRename)==SQLITE_ROW ){ |
| 1166 | const char *zFrom = db_column_text(&qRename, 0); |
| 1167 | const char *zTo = db_column_text(&qRename, 1); |
| 1168 | fossil_fatal("cannot do a partial commit of '%s' because " |
| 1169 | "'%s' was renamed to '%s'", zFrom, zFrom, zTo); |
| 1170 | } |
| 1171 | db_finalize(&qRename); |
| 1172 | } |
| 1173 | |
| 1174 | user_select(); |
| 1175 |
| --- src/checkin.c | |
| +++ src/checkin.c | |
| @@ -1156,19 +1156,20 @@ | |
| 1156 | */ |
| 1157 | if( g.aCommitFile ){ |
| 1158 | Stmt qRename; |
| 1159 | db_prepare(&qRename, |
| 1160 | "SELECT v1.pathname, v2.pathname" |
| 1161 | " FROM vfile AS v1, vfile AS v2" |
| 1162 | " WHERE is_selected(v1.id)" |
| 1163 | " AND v2.origname IS NOT NULL" |
| 1164 | " AND v2.origname=v1.pathname" |
| 1165 | " AND NOT is_selected(v2.id)"); |
| 1166 | if( db_step(&qRename)==SQLITE_ROW ){ |
| 1167 | const char *zFrom = db_column_text(&qRename, 0); |
| 1168 | const char *zTo = db_column_text(&qRename, 1); |
| 1169 | fossil_fatal("cannot do a partial commit of '%s' without '%s' because " |
| 1170 | "'%s' was renamed to '%s'", zFrom, zTo, zFrom, zTo); |
| 1171 | } |
| 1172 | db_finalize(&qRename); |
| 1173 | } |
| 1174 | |
| 1175 | user_select(); |
| 1176 |