@jrbriggs jrbriggs released this Oct 17, 2018

Assets 4

New Features

  • VFS for Git will check the GitHub releases for the configured ring and prompt occasionally when running Git commands in a VFS for Git repository. To configure your ring, use the new gvfs config verb, like:
    gvfs config upgrade.ring ["fast", "slow", "none"]
    VFS for Git will check in the background for an available upgrade. If one is available, a message will be shown periodically to the user in the post-command hook to run gvfs upgrade to install the new version.
  • In the future, VFS for Git will automatically upgrade as new bits become available in the configured ring, eliminating the need to run gvfs upgrade to

Performance Improvements

  • Upgraded to Git 2.19. This version brings with it improvements to unpack_trees to speed up checkout, merge, reset, and rebase.
  • Improvements to compact and maintain the ModifiedPaths.dat database to help mitigate the problem of command perf degrading over time in an enlistment.

General Improvements

  • A couple of fixes for using VS Code on top of VFS for Git.
  • Other perf and reliability fixes.

@jrbriggs jrbriggs released this Aug 23, 2018 · 365 commits to releases/shipped since this release

Assets 4

Performance Improvements:

  • VFS for Git will prefetch commits and trees from a cache server in the background on a schedule, to improve the speed of user-initiated fetches, pulls, and pushes
  • VFS for Git will pre-calculate status in the background in response to changes in the workdir, to improve the speed of user-initiated statuses.
    • Important note: The status cache will not be enabled until after the first reboot after this version of VFS for Git is installed. VFS for Git will still work as normal, but without the status cache feature.

General Improvements

  • Fixed a bug that would cause VFS for Git mount process to shut down if it receives out-of-order ProjFS callbacks.

@kewillford kewillford released this Jul 3, 2018 · 381 commits to master since this release

Assets 4

General improvements:

  • We have improved how GVFS handles enlistments in junctions and mapped to a drive letter.
  • We have started porting parts of the product to .NET Standard.
  • Updated Git for a security issue.
  • Better errors around ProjFS installation issues.
  • Fix backoff on cache server size endpoint 404.
  • GVFS has a better icon.
  • Improved reliability of how the installer upgrades from non-inboxed to inboxed ProjFS.
  • Better recovery from a process that terminates without releasing the GVFS lock.
  • Gracefully handle a missing shared object cache pack directory.

Performance improvements:

  • We have moved MIDX computation to a post-fetch thread. This should save blocking time per prefetch that downloads a packfile from the cache server.
  • We have enabled the generation of the serialized commit graph in the post-fetch thread. This should provide across-the-board perf wins in any command that walks many commits.
  • Improved the memory usage during MIDX computation.
  • Further optimizations to GVFS's index parsing, saving time on commands that need to reproject (like checkout).
  • Use commit graph generation numbers during force push, saving time on force pushes.

@sanoursa sanoursa released this Apr 30, 2018 · 382 commits to master since this release

Assets 4

Major updates:

  • Switched over to use the Windows Projected File System (ProjFS) optional feature on RS4 and later. ProjFS is the new name for the GvFlt driver and its associated user mode library.
  • The local file size cache was migrated from ESENT to SQLite
  • Git commands are now allowed to delete an empty directory
  • Many other reliability improvements in interactions between GVFS and the file system, and between GVFS and git

Perf improvements:

  • Better memory management in git, creating a savings of up to half a second on commands that parse the index
  • Added a new mutli-pack index file to git, allowing it to become much more efficient at finding an object when there are a large number of local packfiles
  • Added a git config setting to disable the calculations for detecting force pushes during 'git fetch' and 'git pull'. That calculation can take 10's of seconds on a large graph, and users can now opt out of it.
  • Due to the transition to SQLite, the file sizes cache can now live in the volume-wide .gvfsCache folder and be shared by multiple repos, causing fewer round trips to the server while enumerating files
  • The post-command step to update placeholder files now batches its size requests to the server, resulting in significant speedups in situations where many placeholder files needed to be updated
  • The client will now also query the /gvfs/sizes endpoint on a cache server that implements that endpoint, reducing the latency on those requests even further
  • Sped up GVFS's parsing of the git index, shaving off 2-3 seconds for a large index file

@sanoursa sanoursa released this Feb 21, 2018 · 383 commits to master since this release

Assets 3

New features:

  • Added a new volume-wide cache for downloaded git objects that is shared amongst multiple repos. Only newly created repos will use the new cache location. Existing clones will continue to use their own private cache.
  • The installer now unmounts and remounts existing repos automatically
  • GVFS no longer forces an antivirus exclusion. This was a relic from long ago when the gvflt driver and the Defender driver used to interfere with each other, but antivirus is no longer GVFS's concern.
  • Added better diagnostic info in the GVFS logs when there are network errors
  • git status now supports an option to avoid doing its ahead/behind calculations. This allows the user to decide if they want to skip that overhead if all they care about is the status of the working directory.

Bug fixes:

  • Lots of bug fixes to make GVFS's file writes (e.g. to its database files) more reliable, even in the face of power loss
  • GVFS can now recover from corrupted git object files (e.g. caused by a torn write), by re-downloading them whenever git asks for an object. The assumption is that git would not be asking GVFS for it if the object was valid.
  • Fixed an annoying bug where a Ctrl+C'd git process could leak a GVFS lock

@sanoursa sanoursa released this Nov 14, 2017 · 385 commits to master since this release

Assets 3

GVFS is now available as a binary installer

Instructions for installing and using GVFS are available at