886c863260
- Use profile-scoped canonical Git clone sources with locked refreshes - Mount shared Git configuration read-only and isolate profile content - Add API and desktop/mobile actions for live Git mount refresh Quality gates: frontend build and backend py_compile passed. Skipped: backend pytest/Ruff unavailable; Docker/manual checks not approved.
1.3 KiB
1.3 KiB
Design: Live Git Config Mount Refresh
Canonical source
Each selected Config Profile owns canonical Git clone directories beneath:
<instance-root>/config-profiles/<profile-id>/git-mounts/<identity>/repo
identity is a stable hash of normalized remote URL, requested ref, and credential scope. Sources are deliberately profile-scoped; clones are never shared across users.
Runtime behavior
- Resolve Git mounts and map them to canonical sources.
- Acquire an exclusive lock for clone, fetch, ref resolution, and checkout.
- Clone into a temporary sibling, then rename on initial creation.
- For refresh, fetch and update the existing working tree in place.
- Bind directory mappings read-only. Existing containers see changed directory contents without recreation.
Boundaries
- URL/ref/source/target/mode changes, direct-file mappings, and changed glob result sets return
restart_required. - Refresh failure is reported without mutating a known-good checkout.
- No non-Git profile content may be copied into a Git checkout; overlapping targets are rejected or reported.
- Containers must not write to shared Git mount sources.
Security
Host Git operations use only an authorized server-side credential source. Credentials are not part of the mounted checkout and are not exposed to containers.