Fossil SCM

Move glob_match(pKeep) out of the locate_unmanaged_files()/vfile_dir_scan() functions. This allows a note to be printed (with -v/--verbose) which explains why "fossil.exe" is not deleted by 'fossil clean -f --ignore ""'. No change of functionality (except for the addition of the note)

jan.nijtmans 2014-04-24 07:21 trunk
Commit 389d0d79396c530fe61d6882640b2a1af5d8f4ae
1 file changed +17 -3
+17 -3
--- src/checkin.c
+++ src/checkin.c
@@ -589,11 +589,11 @@
589589
pClean = glob_create(zCleanFlag);
590590
nRoot = (int)strlen(g.zLocalRoot);
591591
if( !dirsOnlyFlag ){
592592
Stmt q;
593593
Blob repo;
594
- locate_unmanaged_files(g.argc-2, g.argv+2, scanFlags, pIgnore, pKeep);
594
+ locate_unmanaged_files(g.argc-2, g.argv+2, scanFlags, pIgnore, 0);
595595
db_prepare(&q,
596596
"SELECT %Q || x FROM sfile"
597597
" WHERE x NOT IN (%s)"
598598
" ORDER BY 1",
599599
g.zLocalRoot, fossil_all_reserved_names(0)
@@ -602,10 +602,17 @@
602602
db_multi_exec("DELETE FROM sfile WHERE x=%B", &repo);
603603
}
604604
db_multi_exec("DELETE FROM sfile WHERE x IN (SELECT pathname FROM vfile)");
605605
while( db_step(&q)==SQLITE_ROW ){
606606
const char *zName = db_column_text(&q, 0);
607
+ if( glob_match(pKeep, zName+nRoot) ){
608
+ if( verboseFlag ){
609
+ fossil_print("KEPT file \"%s\" not removed (due to --keep"
610
+ " or \"keep-glob\")\n", zName+nRoot);
611
+ }
612
+ continue;
613
+ }
607614
if( !allFileFlag && !dryRunFlag && !glob_match(pClean, zName+nRoot) ){
608615
Blob ans;
609616
char cReply;
610617
char *prompt = mprintf("Remove unmanaged file \"%s\" (a=all/y/N)? ",
611618
zName+nRoot);
@@ -632,21 +639,28 @@
632639
if( emptyDirsFlag ){
633640
Glob *pEmptyDirs = glob_create(db_get("empty-dirs", 0));
634641
Stmt q;
635642
Blob root;
636643
blob_init(&root, g.zLocalRoot, nRoot - 1);
637
- vfile_dir_scan(&root, blob_size(&root), scanFlags, pIgnore, pKeep,
638
- pEmptyDirs);
644
+ vfile_dir_scan(&root, blob_size(&root), scanFlags, pIgnore,
645
+ pEmptyDirs, 0);
639646
blob_reset(&root);
640647
db_prepare(&q,
641648
"SELECT %Q || x FROM dscan_temp"
642649
" WHERE x NOT IN (%s) AND y = 0"
643650
" ORDER BY 1 DESC",
644651
g.zLocalRoot, fossil_all_reserved_names(0)
645652
);
646653
while( db_step(&q)==SQLITE_ROW ){
647654
const char *zName = db_column_text(&q, 0);
655
+ if( glob_match(pKeep, zName+nRoot) ){
656
+ if( verboseFlag ){
657
+ fossil_print("KEPT directory \"%s\" not removed (due to --keep"
658
+ " or \"keep-glob\")\n", zName+nRoot);
659
+ }
660
+ continue;
661
+ }
648662
if( !allDirFlag && !dryRunFlag && !glob_match(pClean, zName+nRoot) ){
649663
Blob ans;
650664
char cReply;
651665
char *prompt = mprintf("Remove empty directory \"%s\" (a=all/y/N)? ",
652666
zName+nRoot);
653667
--- src/checkin.c
+++ src/checkin.c
@@ -589,11 +589,11 @@
589 pClean = glob_create(zCleanFlag);
590 nRoot = (int)strlen(g.zLocalRoot);
591 if( !dirsOnlyFlag ){
592 Stmt q;
593 Blob repo;
594 locate_unmanaged_files(g.argc-2, g.argv+2, scanFlags, pIgnore, pKeep);
595 db_prepare(&q,
596 "SELECT %Q || x FROM sfile"
597 " WHERE x NOT IN (%s)"
598 " ORDER BY 1",
599 g.zLocalRoot, fossil_all_reserved_names(0)
@@ -602,10 +602,17 @@
602 db_multi_exec("DELETE FROM sfile WHERE x=%B", &repo);
603 }
604 db_multi_exec("DELETE FROM sfile WHERE x IN (SELECT pathname FROM vfile)");
605 while( db_step(&q)==SQLITE_ROW ){
606 const char *zName = db_column_text(&q, 0);
 
 
 
 
 
 
 
607 if( !allFileFlag && !dryRunFlag && !glob_match(pClean, zName+nRoot) ){
608 Blob ans;
609 char cReply;
610 char *prompt = mprintf("Remove unmanaged file \"%s\" (a=all/y/N)? ",
611 zName+nRoot);
@@ -632,21 +639,28 @@
632 if( emptyDirsFlag ){
633 Glob *pEmptyDirs = glob_create(db_get("empty-dirs", 0));
634 Stmt q;
635 Blob root;
636 blob_init(&root, g.zLocalRoot, nRoot - 1);
637 vfile_dir_scan(&root, blob_size(&root), scanFlags, pIgnore, pKeep,
638 pEmptyDirs);
639 blob_reset(&root);
640 db_prepare(&q,
641 "SELECT %Q || x FROM dscan_temp"
642 " WHERE x NOT IN (%s) AND y = 0"
643 " ORDER BY 1 DESC",
644 g.zLocalRoot, fossil_all_reserved_names(0)
645 );
646 while( db_step(&q)==SQLITE_ROW ){
647 const char *zName = db_column_text(&q, 0);
 
 
 
 
 
 
 
648 if( !allDirFlag && !dryRunFlag && !glob_match(pClean, zName+nRoot) ){
649 Blob ans;
650 char cReply;
651 char *prompt = mprintf("Remove empty directory \"%s\" (a=all/y/N)? ",
652 zName+nRoot);
653
--- src/checkin.c
+++ src/checkin.c
@@ -589,11 +589,11 @@
589 pClean = glob_create(zCleanFlag);
590 nRoot = (int)strlen(g.zLocalRoot);
591 if( !dirsOnlyFlag ){
592 Stmt q;
593 Blob repo;
594 locate_unmanaged_files(g.argc-2, g.argv+2, scanFlags, pIgnore, 0);
595 db_prepare(&q,
596 "SELECT %Q || x FROM sfile"
597 " WHERE x NOT IN (%s)"
598 " ORDER BY 1",
599 g.zLocalRoot, fossil_all_reserved_names(0)
@@ -602,10 +602,17 @@
602 db_multi_exec("DELETE FROM sfile WHERE x=%B", &repo);
603 }
604 db_multi_exec("DELETE FROM sfile WHERE x IN (SELECT pathname FROM vfile)");
605 while( db_step(&q)==SQLITE_ROW ){
606 const char *zName = db_column_text(&q, 0);
607 if( glob_match(pKeep, zName+nRoot) ){
608 if( verboseFlag ){
609 fossil_print("KEPT file \"%s\" not removed (due to --keep"
610 " or \"keep-glob\")\n", zName+nRoot);
611 }
612 continue;
613 }
614 if( !allFileFlag && !dryRunFlag && !glob_match(pClean, zName+nRoot) ){
615 Blob ans;
616 char cReply;
617 char *prompt = mprintf("Remove unmanaged file \"%s\" (a=all/y/N)? ",
618 zName+nRoot);
@@ -632,21 +639,28 @@
639 if( emptyDirsFlag ){
640 Glob *pEmptyDirs = glob_create(db_get("empty-dirs", 0));
641 Stmt q;
642 Blob root;
643 blob_init(&root, g.zLocalRoot, nRoot - 1);
644 vfile_dir_scan(&root, blob_size(&root), scanFlags, pIgnore,
645 pEmptyDirs, 0);
646 blob_reset(&root);
647 db_prepare(&q,
648 "SELECT %Q || x FROM dscan_temp"
649 " WHERE x NOT IN (%s) AND y = 0"
650 " ORDER BY 1 DESC",
651 g.zLocalRoot, fossil_all_reserved_names(0)
652 );
653 while( db_step(&q)==SQLITE_ROW ){
654 const char *zName = db_column_text(&q, 0);
655 if( glob_match(pKeep, zName+nRoot) ){
656 if( verboseFlag ){
657 fossil_print("KEPT directory \"%s\" not removed (due to --keep"
658 " or \"keep-glob\")\n", zName+nRoot);
659 }
660 continue;
661 }
662 if( !allDirFlag && !dryRunFlag && !glob_match(pClean, zName+nRoot) ){
663 Blob ans;
664 char cReply;
665 char *prompt = mprintf("Remove empty directory \"%s\" (a=all/y/N)? ",
666 zName+nRoot);
667

Keyboard Shortcuts

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