News for hackers. Stuff that matters.
Re:Microsoft and GitHub team up to take Git virtual file sys... by kelnos on Friday November 17, 2017 @07:14PM (#15727028)
I think this is all missing the point. Do they want to store, say, the entirety of the base Windows OS in a single git repo? If that's the case, sure, git isn't a great fit for their use case, and they should either use something else, or find a way (as they're doing?) to change git to fit their needs.

I can't see MS having tens of thousands of developers working on any single component of Windows, so I'm guessing they _do_ want a giant monorepo. If they were to break it up into separate repos per OS component, I doubt they'd have scaling issues (of course, breaking things up introduces coordination and dependency issues).

Re:Microsoft and GitHub team up to take Git virtual file sys... by ethomson on Saturday November 18, 2017 @07:36AM (#15728748)
PM for Git at Microsoft here. We explored splitting it up. It's a 300GB repository and it's been a monorepo for the last 20 years. Splitting it up logically would take a lot of time (to put it mildly) and development would stall while we did it. And once we did, we would have 100 3.5GB repositories? 3500 100MB repositories? Neither of these are particularly appealing and getting changes checked in atomically across multiple repositories is insanely challenging. There's no doubt that we would need to build tooling to make this work for us. (We did actually explore this direction, but ultimately decided that it would be too much work for too poor an experience.)

Instead, we decided to - as you put it - change Git to fit our needs.

Re:Microsoft and GitHub team up to take Git virtual file sys... by tankenmate on Saturday November 18, 2017 @01:03PM (#15729972)
Does Git on MSWindows use a dentry like cache in user land to speed up filename lookups? Does it use a stat() equiv cache? Is there a reason that such caches weren't put into ntoskrnl.exe? Would you be able to give us a brief list (say top 5) of changes that sped up git on windows? And which ones had the most effect on super sized monoreops. Thanks!
Re:Microsoft and GitHub team up to take Git virtual file sys... by geofft on Saturday November 18, 2017 @01:56PM (#15730149)
I have seen poor performance of git on Linux in very large repos, so I'm not super convinced that the dentry cache magically makes things better.

In particular, if my repo is big enough, I often don't have the entire tree in memory (because I'm doing other useful things with memory and caches got evicted). core.untrackedCache makes things a little better, but it's still not great.

Re:Microsoft and GitHub team up to take Git virtual file sys... by trisimix on Saturday November 18, 2017 @09:22AM (#15729031)
What were you using before this?
Re:Microsoft and GitHub team up to take Git virtual file sys... by ethomson on Saturday November 18, 2017 @10:22AM (#15729274)
We were using a mix of tools throughout Microsoft: several teams were using Source Depot, which is an internally developed centralized version control system. It was built to handle large teams, like Windows and Office. It was the precursor to Team Foundation Version Control, which is the centralized version control system available in TFS and VSTS, which is also capable of scaling to large projects, and many organizations within the company were (and are) using that.

GVFS is part of our effort within the company to standardize on a single set of best-of-breed tools, and use the same tools inside Microsoft that we deliver to customers. So we're adopting one engineering system throughout the company and we're moving everybody to Visual Studio Team Services.

Re:Microsoft and GitHub team up to take Git virtual file sys... by DubiousPusher on Saturday November 18, 2017 @10:49PM (#15732148)
It's my understanding that Source Depot was not internally developed but rather was a fork off Perforce which MS purchased a source license to some years back.
Re:Microsoft and GitHub team up to take Git virtual file sys... by ethomson on Tuesday November 21, 2017 @04:41AM (#15746809)
True. Source Depot originated as Perforce and is a fork; it had (at one time) a pretty large team of developers working on it and it has been heavily, heavily modified in the many years since.
Re:Microsoft and GitHub team up to take Git virtual file sys... by oneplane on Saturday November 18, 2017 @12:32PM (#15729866)
Changing Git to fit your needs probably just makes this monorepo function on borrowed time. Fixing the symptoms with band-aids will work for now, but at some point, something will probably have to be done about this 300GB god-repo. Any insight in to what/when/if something is going to be done about that?
Re:Microsoft and GitHub team up to take Git virtual file sys... by ethomson on Saturday November 18, 2017 @12:52PM (#15729933)
I'm not the right person to ask about Windows organization, I'm afraid. But I will say that the nice thing about moving to Git is that its lightweight branching makes refactoring much easier.
Re:Microsoft and GitHub team up to take Git virtual file sys... by KallDrexx on Friday November 17, 2017 @08:53PM (#15727369)
I can't see it being easy to take a 20 year massive code base and split it up into components that are so isolated enough they can live in different repositories smoothly.

As they say in: https://blogs.msdn.microsoft.com/bharry/2017/02/03/scaling-g...

The first big debate was – how many repos do you have – one for the whole company at one extreme or one for each small component? A big spectrum. Git is proven to work extremely well for a very large number of modest repos so we spent a bunch of time exploring what it would take to factor our large codebases into lots of tenable repos. Hmm. Ever worked in a huge code base for 20 years? Ever tried to go back afterwards and decompose it into small repos? You can guess what we discovered. The code is very hard to decompose. The cost would be very high. The risk from that level of churn would be enormous. And, we really do have scenarios where a single engineer needs to make sweeping changes across a very large swath of code. Trying to coordinate that across hundreds of repos would be very problematic.

Re:Microsoft and GitHub team up to take Git virtual file sys... by masklinn on Saturday November 18, 2017 @03:38AM (#15728270)
> I can't see it being easy to take a 20 year massive code base and split it up into components that are so isolated enough they can live in different repositories smoothly.

I can't see it being desirable either, they already have to deal with outdated external API, surely they don't want outdated internal API. A single repository lets you replace an API throughout the codebase at once and remove the old one entirely, if you start "modularising" then all "internal API" are suddenly external with all that entails.