Bug Fixes
-
skip occupied repository destinations during organization
While this is now very well tested, it's something to keep to be sure this
doesn't stop working correctly, after all it deals with user data and that
better won't mess anything up.ein t organize --executeattempted to rename every discovered repository
to a path derived from itsoriginURL, even when another path already
occupied that destination. Several local checkouts sharing an origin
therefore produced a batch ofDirectory not emptyerrors. The generic
"handling" context did not explain that a repository move had failed or
identify its destination.Treat an occupied destination as an informational skip in execution and
simulation modes. Preserve files, directories (including empty ones), and
dangling symlinks rather than replacing them. Already organized repositories
remain a successful no-op. Keep confinement validation ahead of the skip,
and retain inspection failures instead of silently treating them as absence.
A skip reports the source and resolved destination, for example:Skipping repository "./github.com/Byron/jwalk-mine": destination ".../github.com/byron/jwalk-mine" already existsName the actual operations in errors: reading the origin, expanding its
path, resolving or inspecting the destination, creating directories,
staging a relocation, and moving the repository. Move failures carry
sourceanddestinationpath metadata. Use "organize" rather than
"handle" for the enclosing repository context and aggregate.The temporary relocation path also needed to preserve the repository on
failure. When moving into a subdirectory of itself, the first rename put
the only repository copy inside an automatically cleaned temporary
directory. A later failure could delete that copy. Disable cleanup after
the first rename, retain and report therecoverypath on failure, and
restore cleanup after the final rename succeeds. Keep the existing move
algorithm in a private helper so deterministic failure tests can exercise
this sequence without changing production APIs.Replace the occupied-destination error fixture with skip tests that
inspect progress messages and preserve both paths. Cover directories,
empty directories, files, dangling symlinks, repeated organization,
blocked parents, successful nested moves, and temporary-copy retention
when nested destination creation fails. Reuse the existing progress tree
through a dev-only feature to capture messages. Document the behavior in
CLI help and the public operation docs.
Commit Statistics
- 5 commits contributed to the release over the course of 14 calendar days.
- 14 days passed between releases.
- 1 commit was understood as conventional.
- 0 issues like '(#ID)' were seen in commit messages
Commit Details
view details
- Uncategorized
- Merge pull request #3064 from GitoxideLabs/various-improvements (8c513c5)
- Skip occupied repository destinations during organization (2ff66e2)
- Merge pull request #3066 from GitoxideLabs/check-commit-graph (7540f69)
- Merge pull request #3037 from ameyypawar/gix-remote-default-branch (ad0202e)
- Merge pull request #3048 from GitoxideLabs/new-release (5fccccf)