Open Estecka opened 2 years ago
TMSU itself has no filesystem operations, so it's never destructive. The script you're talking about is a convenience helper that may well have limitations.
To be frank I think the solution may be to just remove these scripts, because they're limited and if we're spending loads of effort getting these correct then we may as well spend the efort to have TMSU have this functionality built in. Except I find that idea distasteful.
I've never wanted TMSU to be able to write to the file system, other than its own database, so that a user can have confidence of TMSU's role in their filesystem.
Having said all that, I think the actual problem here may be a bug in tmsu repair --manual
. Reframed as such, it would be something that can be fixed.
They're definitely nice shorthands to have, but I see why you wouldn't want them built-in. I was even going to recreate them myself until I found out about the "native" ones. For now I'll just customize them directly. It just hadn't occurred to me that these were mere shell scripts, so I never thought about check their content.
Having said all that, I think the actual problem here may be a bug in
tmsu repair --manual
.
I think it's a good thing that repair
fails in that scenario; I don't see what else it should be supposed to do. If I wanted to "merge" the files, I'd just use tag --from
and untag --all
instead.
It should fail, but it should probably fail more gracefully than a database constraint violation.
Starting from this repository:
If I attempt to move one file onto the other using
tmsu-fs-mv
, the command will fail, and not update the pathes in the database. However the actual files on the filesystem will still be overwritten.I have no reason to actually want this, but it may still happen on accident. Because tmsu also seems reticent to this, and this is a destructive operation, I would expect it to refrain from actually moving the files.
Alternatively, having a
-n, --no-clobber
option like formv
would be a welcome addition. This would prevent overwritting even files that are not registered in the database.