| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The clock was read once per directory, so a run of several directories
stamped several different times - and a review that took a few seconds
could put one run's files into two folders, or at midnight two dates.
The spec (§7.3) says "the start of the run"; krino.conf(5) documented
the behaviour rather than the intent, so the two contradicted each
other.
The session now carries the run's clock and every directory plans with
it. Engine.Plan keeps its meaning for a caller with no session of its
own; Session.Plan passes the run's own start.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The scopes that drive "no rule deletes a file krino found to be a
duplicate" were collected from rules only. A directory whose duplicate
tests lived in (exclude ...) forms had no scopes at all, so the
protection never engaged: krino explain said "yes duplicate" and the
next rule permanently deleted every copy. The README's promise was
false in that shape, and the spec's wording permitted it.
What matters is what krino knows, not which form taught it. The spec
and krino.conf(5) now say so too.
|
| |
|
|
| |
subdirectories
|
| | |
|
| | |
|
| |
|
|
| |
unreadable file alone
|
| |
|
|
| |
short-document limit documented
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
cleanup, text turning binary, explain flags, interrupt docs
|
| |
|
|
| |
limitations, changelog)
|
| | |
|
| |
|
|
| |
names, conflict enum, dependency gate, absolute tool paths
|
| |
|
|
| |
directories
|
| |
|
|
| |
removed keywords
|
| |
|
|
| |
non-UTF-8 paths in krino new
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
Each file shows its steps, then the rule and the reason it matched, one
field per line; on a terminal every line wraps to its width with
continuation lines under their own column, and piped output is never
wrapped. Choosing per file shows the same block. -P / --no-pager prints
the plan without the pager. A duplicate's original is shown with ~.
|
| |
|
|
|
|
|
|
|
| |
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, changelog
Also: undo removes the directories its run created; a hardlink is never a
duplicate of its own other name; a flag written before "undo" is honoured;
--version prints no leading v. Duplicate conditions with different scopes
not sharing an original is documented as a known limitation.
|