@@ -160,11 +160,11 @@
160 160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161 161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
162 162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
163 163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Create any empty directories now, as well as after the update,
164 164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** so changes in settings are reflected now */
165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !dryRunFlag ) ensure_empty_dirs_created();
165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !dryRunFlag ) ensure_empty_dirs_created(0);
166 166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
167 167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( internalUpdate ){
168 168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tid = internalUpdate;
169 169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( g.argc>=3 ){
170 170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fossil_strcmp(g.argv[2], "current")==0 ){
@@ -227,10 +227,14 @@
227 227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( tid==0 ){
228 228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
229 229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
230 230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
231 231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_begin_transaction();
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "CREATE TEMP TABLE dir_to_delete(name TEXT %s PRIMARY KEY)WITHOUT ROWID",
234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ filename_collation()
235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
232 236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
vfile_check_signature(vid, CKSIG_ENOTFILE);
233 237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !dryRunFlag && !internalUpdate ) undo_begin();
234 238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( load_vfile_from_rid(tid) && !forceMissingFlag ){
235 239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_fatal("missing content, unable to update");
236 240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
@@ -455,11 +459,23 @@
455 459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zName);
456 460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nConflict++;
457 461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
458 462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_print("REMOVE %s\n", zName);
459 463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !dryRunFlag && !internalUpdate ) undo_save(zName);
460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !dryRunFlag ) file_delete(zFullPath);
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !dryRunFlag ){
465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zDir;
466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ file_delete(zFullPath);
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDir = file_dirname(zName);
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( zDir!=0 ){
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zNext;
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("INSERT OR IGNORE INTO dir_to_delete(name)"
471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "VALUES(%Q)", zDir);
472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zNext = db_changes() ? file_dirname(zDir) : 0;
473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zDir);
474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zDir = zNext;
475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
461 477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
462 478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( idt>0 && idv>0 && ridt!=ridv && chnged ){
463 479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Merge the changes in the current tree into the target version */
464 480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob r, t, v;
465 481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
@@ -566,11 +582,16 @@
566 582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Clean up the mid and pid VFILE entries. Then commit the changes.
567 583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
568 584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( dryRunFlag ){
569 585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_end_transaction(1); /* With --dry-run, rollback changes */
570 586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ensure_empty_dirs_created();
587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ensure_empty_dirs_created(1);
588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_create_function(g.db, "rmdir", 1, SQLITE_UTF8, 0,
589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ file_rmdir_sql_function, 0, 0);
590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT rmdir(name) FROM dir_to_delete ORDER BY name DESC"
592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
572 593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc<=3 ){
573 594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* All files updated. Shift the current checkout to the target. */
574 595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("DELETE FROM vfile WHERE vid!=%d", tid);
575 596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
checkout_set_all_exe(tid);
576 597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
manifest_to_disk(tid);
@@ -587,11 +608,11 @@
587 608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
588 609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
589 610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
590 611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Create empty directories specified by the empty-dirs setting.
591 612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void ensure_empty_dirs_created(void){
613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void ensure_empty_dirs_created(int clearDirTable){
593 614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zEmptyDirs = db_get("empty-dirs", 0);
594 615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zEmptyDirs!=0 ){
595 616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
596 617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob dirName;
597 618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob dirsList;
@@ -613,11 +634,16 @@
613 634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"required by empty-dirs setting", zDir);
614 635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
615 636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
616 637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
617 638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 1: { /* exists, and is a directory */
618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* do nothing - required directory exists already */
639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* make sure this directory is not on the delete list */
640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( clearDirTable ){
641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "DELETE FROM dir_to_delete WHERE name=%Q", zDir
643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
619 645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
620 646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
621 647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 2: { /* exists, but isn't a directory */
622 648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_warning("file %s found, but a directory is required "
623 649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"by empty-dirs setting", zDir);
624 650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!