Index: src/add.c ================================================================== --- src/add.c +++ src/add.c @@ -123,10 +123,17 @@ add_one_file(zName, vid, pOmit); } db_finalize(&q); db_multi_exec("DELETE FROM sfile"); } + + + + + + + /* ** COMMAND: add ** ** Usage: %fossil add FILE... @@ -224,10 +231,56 @@ } } closedir(d); blob_reset(&path); } + +/* +** COMMAND: nop +** +** Usage: %fossil nop FILE... +** +** Do nothing to one or more files from the tree. +** +** This command does not remove the files from disk. It just marks the +** files as no longer being part of the project. In other words, future +** changes to the named files will not be versioned. +*/ +void nop_cmd(void){ + int i; + int vid; + + db_must_be_within_tree(); + vid = db_lget_int("checkout", 0); + if( vid==0 ){ + fossil_panic("no checkout to remove from"); + } + db_begin_transaction(); + for(i=2; i<g.argc; i++){ + char *zName; + + zName = mprintf("%/", g.argv[i]); + if( file_isdir(zName) == 1 ){ + del_directory_content(zName); + } else { + char *zPath; + Blob pathname; + file_tree_name(zName, &pathname, 1); + zPath = blob_str(&pathname); + if( !db_exists( + "SELECT 1 FROM vfile WHERE pathname=%Q AND NOT deleted", zPath) ){ + fossil_fatal("not in the repository: %s", zName); + }else{ + db_multi_exec("UPDATE vfile SET deleted=0, chnged=0 WHERE pathname=%Q", zPath); + printf("NOP %s\n", zPath); + } + blob_reset(&pathname); + } + free(zName); + } + db_end_transaction(0); +} /* ** COMMAND: rm ** COMMAND: delete ** COMMAND: dismiss Index: src/schema.c ================================================================== --- src/schema.c +++ src/schema.c @@ -415,10 +415,11 @@ @ -- @ -- @ CREATE TABLE vfile( @ id INTEGER PRIMARY KEY, -- ID of the checked out file @ vid INTEGER REFERENCES blob, -- The baseline this file is part of. +@ nop BOOLEAN DEFAULT 0, -- True if no operation to be performed. User toggled. @ chnged INT DEFAULT 0, -- 0:unchnged 1:edited 2:m-chng 3:m-add @ deleted BOOLEAN DEFAULT 0, -- True if deleted @ isexe BOOLEAN, -- True if file should be executable @ rid INTEGER, -- Originally from this repository record @ mrid INTEGER, -- Based on this record due to a merge