Yesterday, we released a major update to our Visual Studio Tools for Git. While still nowhere near done, we feel like we’ve crossed a significant threshold of completeness and usability. If you’re already using them or have tried them and didn’t feel they were ready, I encourage you to give this update a go.
You can install the latest drop here: http://aka.ms/git4vs
It will require that you have Visual Studio 2012 Update 2.
The most compelling improvements include:
- Push is dramatically faster
- Larger repos now work a lot better
- Merge and pull now allow you to have non-conflicting changes in your working copy
Additional improvements are:
- Added support for integrated Windows authentication when receiving a 407 Proxy Authentication Required
- Added support for pushing to Git servers which do not support Transfer-Encoding: Chunked
- Added support for pushing to certain Git servers which require side-band-64k in order to report push status
- The sync branch button on the Commits page is now functional. It does a fetch, merge, and push, in sequence
- Merge and pull now properly prompt the user to save their work before starting
- Merge now properly auto-reloads non-dirty solution items which changed in the working copy
- The push command now sends fewer objects to the server, which is a substantial performance improvement
- Merge and pull now use checkout instead of reset for fast-forward merges, which is a performance improvement
- Fixed CRLF issue that was causing checkout to fail due to conflicts in certain scenarios
- Improved performance of working directory status computation (much less hashing of workdir contents)
- Fixed an issue where CRCRLF line endings would end up in the working copy in certain scenarios
- The Add, Delete, and Ignore actions in the Untracked Items section of the Changes page are now working
- Improved Solution Explorer glyph behavior with JavaScript and other CPS (Common Project System) projects
- Undo merge option added to the Resolve Conflicts page
- Fixed a bug where the user was not prompted for fresh credentials when stored credentials failed to authenticate
- Submodule support from the libgit2 project has arrived in this release, but we haven't yet finished all the work in our VS plug-in to make them work smoothly.
As I never like talking about performance improvements without giving some numbers… Here’s a report that I got about a week ago. Not sure these are the final numbers but you can see the degree of improvement. These are differences between the Git client tooling between Sprint 44 (the previous public release) and Sprint 46 (this release), using the TFS Git Server. The numbers are in seconds.
We have also made some improvements to our Git server perf but these are just client improvements. Of course, we haven’t released an on-prem Git server yet so the only place you can see the server improvements is on http://tfs.visualstudio.com. The Git server perf improvements were deployed with our Sprint 46 service update yesterday.
Check it out and let us know what you think!
Thanks,
Brian