Feature description
Replace or complement .zi-mirror-using-svn with a Git sparse-checkout backend for GitHub-hosted snippet directories, without regressing install, update, or status behavior.
Context
PR #338 attempted to replace SVN with Git sparse checkout, but it remained targeted at main, missed the requested rebase window, and leaves unresolved compatibility problems:
- the sparse copy omits
.git, while the proposed status path expects .git and otherwise falls back to svn status;
- fresh install, update, status, and already-installed snippet behavior are not covered together;
- the boundary for non-GitHub SVN sources is undefined.
Current next still calls .zi-mirror-using-svn from lib/zsh/install.zsh, so the underlying need remains valid even though PR #338 should not be revived unchanged.
Acceptance criteria
- Define which URL/source classes use Git sparse checkout and which retain SVN compatibility.
- Preserve repeatable fresh install and update behavior.
- Make status detection work for the installed representation; do not depend on
.git after discarding it.
- Cover existing installations and migration/fallback behavior.
- Add focused ZUnit coverage for install, update, status, and non-GitHub boundaries.
- Target
next with one focused implementation PR.
Tracker triage
- Suggested item type: Feature
- Suggested priority: P2
- Suggested effort: Medium
- Suggested status: Backlog
Related: #338
Feature description
Replace or complement
.zi-mirror-using-svnwith a Git sparse-checkout backend for GitHub-hosted snippet directories, without regressing install, update, or status behavior.Context
PR #338 attempted to replace SVN with Git sparse checkout, but it remained targeted at
main, missed the requested rebase window, and leaves unresolved compatibility problems:.git, while the proposed status path expects.gitand otherwise falls back tosvn status;Current
nextstill calls.zi-mirror-using-svnfromlib/zsh/install.zsh, so the underlying need remains valid even though PR #338 should not be revived unchanged.Acceptance criteria
.gitafter discarding it.nextwith one focused implementation PR.Tracker triage
Related: #338