Fossil SCM

Detect old stashfile schema and recreate to allow file renames to be stashed in existing checkout databases.

andybradford 2016-07-04 22:08 stash-fixes
Commit a13217b8975276ab79d3dacce19d07f749ab6a4b
1 file changed +15
+15
--- src/stash.c
+++ src/stash.c
@@ -481,16 +481,31 @@
481481
void stash_cmd(void){
482482
const char *zDb;
483483
const char *zCmd;
484484
int nCmd;
485485
int stashid = 0;
486
+ int rc;
486487
undo_capture_command_line();
487488
db_must_be_within_tree();
488489
db_open_config(0, 0);
489490
db_begin_transaction();
490491
zDb = db_name("localdb");
491492
db_multi_exec(zStashInit /*works-like:"%w,%w"*/, zDb, zDb);
493
+ rc = db_exists("SELECT 1 FROM sqlite_master"
494
+ " WHERE name='stashfile'"
495
+ " AND sql GLOB '* PRIMARY KEY(origname, stashid)*'");
496
+ if( rc!=0 ){
497
+ db_multi_exec(
498
+ "CREATE TABLE \"%w\".stashfile_tmp AS SELECT * FROM stashfile;"
499
+ "DROP TABLE stashfile;", zDb
500
+ );
501
+ db_multi_exec(zStashInit /*works-like:"%w,%w"*/, zDb, zDb);
502
+ db_multi_exec(
503
+ "INSERT INTO stashfile SELECT * FROM stashfile_tmp;"
504
+ "DROP TABLE stashfile_tmp;"
505
+ );
506
+ }
492507
if( g.argc<=2 ){
493508
zCmd = "save";
494509
}else{
495510
zCmd = g.argv[2];
496511
}
497512
--- src/stash.c
+++ src/stash.c
@@ -481,16 +481,31 @@
481 void stash_cmd(void){
482 const char *zDb;
483 const char *zCmd;
484 int nCmd;
485 int stashid = 0;
 
486 undo_capture_command_line();
487 db_must_be_within_tree();
488 db_open_config(0, 0);
489 db_begin_transaction();
490 zDb = db_name("localdb");
491 db_multi_exec(zStashInit /*works-like:"%w,%w"*/, zDb, zDb);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
492 if( g.argc<=2 ){
493 zCmd = "save";
494 }else{
495 zCmd = g.argv[2];
496 }
497
--- src/stash.c
+++ src/stash.c
@@ -481,16 +481,31 @@
481 void stash_cmd(void){
482 const char *zDb;
483 const char *zCmd;
484 int nCmd;
485 int stashid = 0;
486 int rc;
487 undo_capture_command_line();
488 db_must_be_within_tree();
489 db_open_config(0, 0);
490 db_begin_transaction();
491 zDb = db_name("localdb");
492 db_multi_exec(zStashInit /*works-like:"%w,%w"*/, zDb, zDb);
493 rc = db_exists("SELECT 1 FROM sqlite_master"
494 " WHERE name='stashfile'"
495 " AND sql GLOB '* PRIMARY KEY(origname, stashid)*'");
496 if( rc!=0 ){
497 db_multi_exec(
498 "CREATE TABLE \"%w\".stashfile_tmp AS SELECT * FROM stashfile;"
499 "DROP TABLE stashfile;", zDb
500 );
501 db_multi_exec(zStashInit /*works-like:"%w,%w"*/, zDb, zDb);
502 db_multi_exec(
503 "INSERT INTO stashfile SELECT * FROM stashfile_tmp;"
504 "DROP TABLE stashfile_tmp;"
505 );
506 }
507 if( g.argc<=2 ){
508 zCmd = "save";
509 }else{
510 zCmd = g.argv[2];
511 }
512

Keyboard Shortcuts

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