Commit adb620b
committed
Replace GVFS.Service with machine-wide logon task and LocalRepoRegistry
Replace the GVFS.Service Windows service with a simpler architecture:
Infrastructure:
- LocalRepoRegistry: file-based repo tracking, wire-compatible with old
service format. SYSTEM uses ProgramData; per-user uses platform default.
Seed-on-first-use copies accessible entries from system registry.
- LogonTaskRegistration: machine-wide \GVFS\AutoMount task fires for all
interactive users (GroupId S-1-5-4) at logon, runs gvfs service --mount-all.
Each user's repos loaded from their own LocalRepoRegistry.
- ProjFS boot task: enable-projfs-on-all-drives.ps1 enables ProjFS and
attaches PrjFlt on all volumes. Embedded in task XML via build-task-xml.ps1
with SHA-256 hash marker for drift detection.
- CLI verb fallbacks: mount/unmount/service verbs fall back to LocalRepoRegistry
when the service named pipe is unavailable.
- GVFSVerb: silent-success fallback for PrjFlt FilterAttach.
- InProcessMount: restore exception safety net in HandleRequest.
Installer:
- Stop and delete GVFS.Service on upgrade from older versions.
- Register \GVFS\AutoMount logon task.
- Remove service deployment, install, start from [Files]/[Run].
- Remove PendingUpgrade staging logic and ShowMountChoiceDialog.
- Exclude GVFS.Service.exe from payload (layout.bat).
Functional tests:
- Remove service install/uninstall (no service to test against).
- Settings.cs auto-detects user-mode gvfs at %LocalAppData%\VFSForGit\Current.
926 unit tests pass.
Assisted-by: Claude Sonnet 4.5
Assisted-by: Claude Opus 4.6
Signed-off-by: Tyrie Vella <tyrielv@gmail.com>1 parent 410f0d2 commit adb620b
21 files changed
Lines changed: 2304 additions & 342 deletions
File tree
- GVFS
- GVFS.Common
- GVFS.FunctionalTests
- GVFS.Installers
- GVFS.Mount
- GVFS.Payload
- GVFS.UnitTests/Common
- GVFS/CommandLine
- scripts/projfs-attach
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
0 commit comments