[pull] master from microsoft:master#63
Merged
pull[bot] merged 10 commits intocgallred:masterfrom Mar 9, 2026
Merged
Conversation
Replace the heavyweight SafeDirectoryOwnershipTests functional test (which required elevation, P/Invoke for SeRestorePrivilege, directory ownership changes, and global git config manipulation) with two layers of lightweight unit tests: Layer 1: NormalizePathForSafeDirectoryComparison - pure string tests covering backslash/forward-slash conversion, case normalization, trailing slash trimming, and null/empty safety. Layer 2: Constructor control-flow tests using a mock subclass that overrides the native calls (InitNative, TryOpenRepo, GetLastNativeError, GetSafeDirectoryConfigEntries) to verify the safe.directory case- sensitivity workaround logic without touching libgit2 or real config. To support testability, extract virtual methods from LibGit2Repo for native interactions and make CheckSafeDirectoryConfigForCaseSensitivity- Issue protected. The NormalizePath helper is renamed to NormalizePathForSafeDirectoryComparison and scoped as internal. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move authentication, server config query, version validation, cache health checks, git config settings, and enlistment logging from the mount verb (gvfs.exe) into the mount process (gvfs.mount.exe). This eliminates duplicate work (auth and index parsing were done in both processes) and reduces mount time from ~40s to ~22s. The verb now only does: disk layout upgrade check, ProjFS attach, enum arg validation, mount exe existence check, launch + wait. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Start auth + config query immediately on entry to Mount(), before repo metadata loading. This overlaps network latency with all local I/O: metadata, git version/hooks/filesystem checks, and git config writes. The network task (auth + config) and local task (validations + git config) run concurrently via Task.WhenAll. RepoMetadata loading runs on the main thread between task launch and local task start, overlapping with the initial anonymous auth probe. Measured improvement on os.2020 (2.4M index entries): Production: ~29s wall clock Sequential: ~22s (prior commit moved work to mount.exe) Parallel: ~19s (this commit) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add TryInitializeAndQueryGVFSConfig to GitAuthentication that merges the anonymous probe, credential fetch, and config query into a single flow, making at most 2 HTTP requests (or 1 for anonymous repos) and reusing the same TCP/TLS connection. Refactor TryInitialize to delegate to the combined method, eliminating the duplicated TryAnonymousQuery logic. Add TryAuthenticateAndQueryGVFSConfig to GVFSVerb and update CloneVerb, PrefetchVerb, and CacheServerVerb to use it, replacing the two-step TryAuthenticate + QueryGVFSConfig pattern with a single call. Remove the now-unused QueryGVFSConfigWithFallbackCacheServer. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Change the default 'gvfs dehydrate' behavior from full-enlistment dehydration (unmount, backup entire src, recreate virtualization root) to per-folder dehydration of all root-level folders. This is faster and does not require a full unmount/remount cycle. The previous full-enlistment behavior is preserved via the new --full flag for cases where a complete reset is needed. Changes: - Add --full option for legacy full-enlistment dehydrate - When neither --folders nor --full is specified, enumerate all root-level directories from HEAD via 'git ls-tree' and dehydrate them individually - Using the git tree (not filesystem) ensures deleted folders are restored by the dehydrate - Reject combining --full with --folders - Update confirmation messages to reflect new defaults - Update functional tests: existing full-dehydrate tests now pass --full, add new FullDehydrate* tests, default-path test exercises the new all-root-folders behavior Performance (2.8M file repo, 1000 dirs hydrated, ~5,600 files): Root-folders (default): 13.0s Full (--full): 51.1s Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
dehydrate: default to per-folder dehydration, add --full flag
Improve mount performance by moving validation to mount process and parallelizing I/O
…sitive Workaround libgit2 safe.directory case mismatch bug
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )