Skip to content

upgrade-tests: verify hook binary versions after upgrade+remount#1982

Open
tyrielv wants to merge 1 commit into
microsoft:masterfrom
tyrielv:tyrielv/test-hook-version-upgrade
Open

upgrade-tests: verify hook binary versions after upgrade+remount#1982
tyrielv wants to merge 1 commit into
microsoft:masterfrom
tyrielv:tyrielv/test-hook-version-upgrade

Conversation

@tyrielv
Copy link
Copy Markdown
Contributor

@tyrielv tyrielv commented May 22, 2026

TryUpdateHooks (mount time) updates native hooks but not pre-command.exe/post-command.exe loader copies. Those are only deployed at clone time.

This PR adds Assert-HookVersionsMatch to the staging-upgrade and clean-upgrade test scenarios. After upgrade completes, remount the enlistment and verify all 5 hook binaries match the installed versions:

  • read-object.exe ← GVFS.ReadObjectHook.exe
  • virtual-filesystem.exe ← GVFS.VirtualFileSystemHook.exe
  • post-index-change.exe ← GVFS.PostIndexChangedHook.exe
  • pre-command.exe ← GitHooksLoader.exe
  • post-command.exe ← GitHooksLoader.exe

Expected: The pre-command/post-command assertions will fail until TryUpdateHooks is fixed to also update the loader copies.

@tyrielv tyrielv force-pushed the tyrielv/test-hook-version-upgrade branch from 567cb33 to d5746b5 Compare May 22, 2026 21:20
@tyrielv tyrielv marked this pull request as ready for review May 22, 2026 21:42
@tyrielv tyrielv enabled auto-merge May 22, 2026 21:42
@tyrielv tyrielv force-pushed the tyrielv/test-hook-version-upgrade branch from d5746b5 to dcc5340 Compare May 22, 2026 21:43
…mount

TryUpdateHooks (called at mount time) updated the 3 native hooks
(read-object, virtual-filesystem, post-index-change) but skipped the
pre-command.exe and post-command.exe copies of GitHooksLoader.exe.
Those were only deployed at clone time via InstallHooks, so upgrading
GVFS and remounting left stale loader binaries in the enlistment.

Refactor TryUpdateHook into an overload that takes explicit source and
target paths, then call it from TryUpdateHooks for both command hook
loaders using GitHooksLoader.exe as the source. The HookData overload
becomes a thin wrapper that delegates to the new one.

Add Assert-HookVersionsMatch to the staging-upgrade and clean-upgrade
test scenarios: after upgrade completes, remount and verify all 5 hook
binaries match the installed versions.

Assisted-by: Claude Opus 4.6
Signed-off-by: Tyrie Vella <tyrielv@gmail.com>
@tyrielv tyrielv force-pushed the tyrielv/test-hook-version-upgrade branch from dcc5340 to c3808d2 Compare May 22, 2026 21:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants