diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-09-14 23:42:35 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-09-14 23:42:35 +0200 |
| commit | 166565025832c8a8faf7397766aeaa878980dd2d (patch) | |
| tree | 8184682259223341e41763434b01e6baa2fb4ec9 /cmd/krino/sort.go | |
| parent | bb8b547023b0867f31d7452faceef5769a45b94b (diff) | |
| download | krino-166565025832c8a8faf7397766aeaa878980dd2d.tar.gz krino-166565025832c8a8faf7397766aeaa878980dd2d.zip | |
a real run's later directories are not blocked by earlier claims; -n across directories documented
Diffstat (limited to 'cmd/krino/sort.go')
| -rw-r--r-- | cmd/krino/sort.go | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/cmd/krino/sort.go b/cmd/krino/sort.go index 637587d..f600475 100644 --- a/cmd/krino/sort.go +++ b/cmd/krino/sort.go @@ -119,10 +119,11 @@ func cmdSort(g *globals, names []string, stdout, stderr io.Writer) int { exit := 0 printed := false jsonDirs := []plan.JSONDir{} // never nil: the document's "dirs" must marshal as [], not null - // A3: one Claims for the whole run, shared across every directory's - // Plan call below, so two directories that both plan a move to the - // same destination resolve the collision at planning time instead of - // each independently believing it owns that path. + // A3: in a dry run one Claims is shared across every directory's Plan + // call below, so two directories that both plan a move to the same + // destination resolve the collision at planning time instead of each + // independently believing it owns that path. A real run applies each + // directory before planning the next and starts fresh claims after it. claims := plan.NewClaims() for _, d := range e.Dirs { @@ -281,6 +282,14 @@ func cmdSort(g *globals, names []string, stdout, stderr io.Writer) int { if quit { break } + if !g.dry { + // This directory is applied (or skipped) now, so the disk is the + // truth for the next one: its claims - sources it moved away, + // destinations it planned but declined or failed - must not + // block a later directory (triage 28i). A dry run applies + // nothing, so there they carry over. + claims = plan.NewClaims() + } } if g.json { |
