From 1506c7dcd6032c04c1df6f5785b6dd3dfe4511cc Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Mon, 14 Sep 2026 10:56:21 +0200 Subject: krino: duplicates are found, never deleted A rule combining (duplicate) with a delete action is refused at load, and a file that is a duplicate under any duplicate scope its directory uses gets no delete step from any rule: the plan shows it skipped and the chain continues. A failed duplicate check blocks the delete too. Tests cover (matched), another rule's own condition, a test evaluation skipped, two scopes and a failed check, each checking every copy is still on disk. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index 4b7d4c3..34d3a78 100644 --- a/README.md +++ b/README.md @@ -189,6 +189,10 @@ rule content only when a private pattern list is configured with - `(delete)` moves a file to the freedesktop.org Trash by default, not `unlink(2)` — recoverable, by hand or with `krino undo`. `(delete permanent)` is the explicit opt-out, and undo can never reverse it. +- Duplicates are found, never deleted. A rule can combine `(duplicate)` with + `move`, never with `delete`, and no other rule can delete a file krino has + found to be a duplicate. Move duplicates aside, for example to `~/.dupes/`, + and delete them later yourself or with a tool such as jdupes. - Every step of every run is appended to `$XDG_STATE_HOME/krino/krino.log` (default `~/.local/state/krino/krino.log`), tab-separated and `grep`-able. -- cgit v1.3