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.

drh 2012-11-04 11:58 trunk
Commit c0fe455c78aa6b976a1b536fac58c2c87b399426
1 file changed +5 -4
+5 -4
--- src/checkin.c
+++ src/checkin.c
@@ -1156,19 +1156,20 @@
11561156
*/
11571157
if( g.aCommitFile ){
11581158
Stmt qRename;
11591159
db_prepare(&qRename,
11601160
"SELECT v1.pathname, v2.pathname"
1161
- " FROM vfile AS v2 CROSS JOIN vfile AS v1"
1161
+ " FROM vfile AS v1, vfile AS v2"
11621162
" WHERE is_selected(v1.id)"
11631163
" 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)");
11651166
if( db_step(&qRename)==SQLITE_ROW ){
11661167
const char *zFrom = db_column_text(&qRename, 0);
11671168
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);
11701171
}
11711172
db_finalize(&qRename);
11721173
}
11731174
11741175
user_select();
11751176
--- 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

Keyboard Shortcuts

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