I have just checked in revision 920862f which makes another change to the TMSU database schema. This will only affect you (at this time) if you are using a trunk build, as opposed to the 0.0.9 release or earlier.
Since 0.0.9 I have been experimenting with ways of improving the performance of inherited tags which in 0.0.9 were calculated on-the-fly by enumerating the file-system whenever the database was queried. This was obviously very slow in larger file-systems so I had been dead set on getting these tag-inheriting files into the database when the file is initially tagged so that the performance penalty is paid only once. Unfortunately the approaches I have tried also have their own performance and usability issues.
Hopefully this new solution will solve these problems:
* The 'files' command no longer goes looking for files on disk that inherit tags: it now works solely off the contents of the database.
* A new --recursive option on the 'tag' and 'untag' command allow directories to be tagged/untagged recursively.
* The 'files' command has new --directory and --file options to help filter between directories and files.[1]
To use the new trunk, you will need to upgrade the database.
1. Backup your database.
2. Use the 0.0.9_to_0.1.0.sql script to upgrade a 0.0.9 release database or trunk_to_0.1.0.sql script to upgrade a newer, trunk database.
3. Run:
$ sqlite -init misc/db-upgrades/VER_to_0.1.0.sql ~/.tmsu/default.db
Please let me know of any problems you have.
Paul
- - -
Footnote 1: --directory actually excludes files that are in matching directories: any files that are tagged directly will still be returned. Likewise --file excludes the parent directories of matching files: any matching directories that have no matching files will still be returned.