News for hackers. Stuff that matters.
[dead]
Re:Announcing GVFS: Git Virtual File System by bndr on Friday February 03, 2017 @09:12AM (#13559869)
It's a normal practice, google does it also: "The Google codebase includes approximately one billion files and has a history of approximately 35 million commits spanning Google's entire 18-year existence. The repository contains 86TBa of data, including approximately two billion lines of code in nine million unique source files." [1]

[1] http://cacm.acm.org/magazines/2016/7/204032-why-google-store...

Re:Announcing GVFS: Git Virtual File System by testUser69 on Friday February 03, 2017 @10:17AM (#13560294)
>The Git community strongly suggests and prefers developers have more and smaller repositories. A Git-clone operation requires copying all content to one's local machine, a procedure incompatible with a large repository.

They aren't copying all the files like you do with Git. They have a custom set up that sounds like it lets you checkout just the parts you need. I don't have time to read the whole thing, but it sounds like it works by breaking down a "super repo" into small "sub repos". This actually makes sense.

There is no way working with a 300gb git repo is fun or efficient, and they've probably been doing that for years at Microsoft.

Re:Announcing GVFS: Git Virtual File System by vertex-four on Friday February 03, 2017 @12:17PM (#13561367)
> I don't have time to read the whole thing, but it sounds like it works by breaking down a "super repo" into small "sub repos".

They're explicitly not doing that. They have a massive, monolithic repo, and then tooling for interacting with that monolithic repo without having to grab the whole thing. They are not using Git. You just read the section titled "Alternatives".

Re:Announcing GVFS: Git Virtual File System by justinmk on Friday February 03, 2017 @09:16AM (#13559900)
GVFS, or something like it, is an important development for git. Facebook already implemented something similar for Mercurial[1]. At a glance, GVFS hints that git has become more extensible than it used to be.

The merits of a "monorepo" have been hashed out previously[2], it's more nuanced than "lol, M$".

[1] https://code.facebook.com/posts/218678814984400/scaling-merc...

[2] http://danluu.com/monorepo/

Re:Announcing GVFS: Git Virtual File System by maybe_someday on Friday February 03, 2017 @09:15AM (#13559890)
Hmmm.. Both Facebook and Google have giant monolithic repositories and use trunk based development and i'm guessing you wouldn't say they do it wrong. So not surprised Windows does
Re:Announcing GVFS: Git Virtual File System by koolba on Friday February 03, 2017 @09:24AM (#13559948)
This is the Internet. There's always someone who'll say "they're doing it wrong!"
Re:Announcing GVFS: Git Virtual File System by collyw on Friday February 03, 2017 @09:42AM (#13560056)
While never offering a suggested improvement.
Re:Announcing GVFS: Git Virtual File System by cwyers on Friday February 03, 2017 @01:40PM (#13562064)
To be fair, every time we have a thread on HN about how Google or Facebook do version control, there are people who leap at the chance to say they're doing it wrong.
Re:Announcing GVFS: Git Virtual File System by sametmax on Friday February 03, 2017 @09:15AM (#13559892)
I wouldn't do that way either, but they are not the only one doing that. Google and facebook have a similar approach:

https://www.quora.com/Why-does-Facebook-have-so-much-of-thei...

https://www.wired.com/2015/09/google-2-billion-lines-codeand...

They may know something we don't :)

Re:Announcing GVFS: Git Virtual File System by klodolph on Friday February 03, 2017 @09:15AM (#13559893)
I guess Microsoft, Google, Facebook, and Twitter are all run by amateurs, to name a few.
Re:Announcing GVFS: Git Virtual File System by becarefulyo on Friday February 03, 2017 @09:21AM (#13559927)
It works fine. We have really good code search tools.

The numbers include test code, utilities, two entire web browsers, UI frameworks, etc.

Re:Announcing GVFS: Git Virtual File System by ska on Friday February 03, 2017 @12:05PM (#13561262)
There is a reason you can only think of one reason for this - it's known as inexperience.
Re:Announcing GVFS: Git Virtual File System by therealmarv on Friday February 03, 2017 @09:16AM (#13559901)
It seems you have no clue how very big companies work with source code management. Google e.g. is using for the most part only ONE single repository for their source code. So would you also say the same about them?
Re:Announcing GVFS: Git Virtual File System by stephenr on Friday February 03, 2017 @10:22AM (#13560340)
Yes?

Big companies, even successful companies aren't incapable of making, and continuing to make stupid decisions.

I'm sure each company has a reason for using a single massive repo. I doubt I would agree with their reason, but I'm sure they have one.

Re:Announcing GVFS: Git Virtual File System by WorldMaker on Friday February 03, 2017 @02:28PM (#13562486)
The reasons seem to be fairly consistent regardless of the size of monorepo [1]: cross-cutting concerns (keeping commits/changes together that target a lot of different modules) and integration testing effort (testing a lot of different modules together).

These may not be problems that everyone feels as sharply, but they can be problems that nearly everyone might face at some point. Having these problems isn't even necessarily a sign of bad architecture: at some point all of your software likely has to play nice together on the same machine.

Certainly there are solutions beyond just monorepos, but monorepos are a very well understood, ancient solution (that seems to be making a comeback of sorts, despite many of the other solutions being easier and more powerful today than they were back when monorepos were about the only solution).

[1] I've seen tools like Lerna (https://github.com/lerna/lerna) used for a managing several relatively small "monorepos" lately.

Re:Announcing GVFS: Git Virtual File System by dstaheli on Friday February 03, 2017 @09:16AM (#13559895)
It aint easy to transition from a significant code base in centralized source control to distributed over night, yet the benefits of distributed are desired.
Re:Announcing GVFS: Git Virtual File System by olkid on Friday February 03, 2017 @12:26PM (#13561442)
> tightly coupled together

systemd

Re:Announcing GVFS: Git Virtual File System by oneplane on Friday February 03, 2017 @09:10AM (#13559855)
This is exactly what I was thinking when I read the article. There is no reason for any Git repo to be that big. It's not a bug in Git, but more like a reasonable limit... if your project exceeds it, you're doing it wrong.

I'm also curious as to how they used to do it without git, maybe using TFS? I wonder what the timings on that were.

Anyway, I don't think GVFS is the way to go, and I hope that it either doesn't get accepted or doesn't play a role outside of Windows. It's good to see more Git usage, but hacking away instead of fixing the problematic project seems somewhat idiotic. I can imagine other tools having problems with a single project that size, are they going to hack those as well?

Re:Announcing GVFS: Git Virtual File System by BugsJustFindMe on Friday February 03, 2017 @09:21AM (#13559929)
Ah, yes. The mating call of the wild elite computer expert.

Microsoft: "We, only one of most technologically advanced companies with only the 2nd or 3rd highest market cap of any public company on the planet depending on the day, had a problem with infrastructure trying to manage possibly the largest software project that anyone has ever made. And then we solved it."

You: "Stop doing what you're doing and pay attention to meeeeeeeeeeee."

Re:Announcing GVFS: Git Virtual File System by testUser69 on Friday February 03, 2017 @10:05AM (#13560212)
I think it's more naive to believe that large companies always make the right decisions. We see Microsoft make mistake after mistake (look at windows 8, windows vista). The only time they fix their mistakes is when they're made public.

So there is no reason to fix their mistake of a code base.

Re:Announcing GVFS: Git Virtual File System by ska on Friday February 03, 2017 @12:09PM (#13561295)
It would be naive to assume large companies always make the right decisions, which is why few people do that.

However, when you see that a large company is doing something in a way that you thing is silly or strange, the logical thing to ask first is "what do they understand that I don't understand?". It won't always be the case, of course, but most of the time it will turn out you were missing something.

Assuming off the bat that they are idiots and you know a better way is staggeringly naive.

Re:Announcing GVFS: Git Virtual File System by oz on Friday February 03, 2017 @02:50PM (#13562677)
>the logical thing to ask first is "what do they understand that I don't understand?".

There's even a name for this: "Going from D to C - from disparagement to curiosity". I think I first heard it from @patio11.

Re:Announcing GVFS: Git Virtual File System by patio11 on Saturday February 04, 2017 @01:22AM (#13565918)
Doesn't sound like the way I would phrase the thought, so I checked: http://www.kalzumeus.com/2012/09/17/ramit-sethi-and-patrick-... <-- Ramit said it here, although I suspect it might be older.
Re:Announcing GVFS: Git Virtual File System by ska on Friday February 03, 2017 @03:28PM (#13563013)
It isn't the snappiest label, but it does capture the idea well.
Re:Announcing GVFS: Git Virtual File System by CJefferson on Friday February 03, 2017 @10:29AM (#13560411)
But, it seems all large companies (Facebook, Google, Microsoft) are using a mono-repo, and no-one is publicly admitting to using many small repos.

If no company is using many small repos for truly massive projects, then it's hard to argue it would be a good idea. Could everyone who has looked at this problem make the wrong choice?

Re:Announcing GVFS: Git Virtual File System by Sacho on Friday February 03, 2017 @11:54AM (#13561158)
This is also mirrored by many not-so-big javascript projects, i.e. see the adoption of https://github.com/lerna/lerna
Re:Announcing GVFS: Git Virtual File System by keithlfrost on Friday February 03, 2017 @11:04AM (#13560722)
Note that Amazon is not on your list. They did not adopt the mono-repo approach. Their tools have their own advantages and disadvantages, to be sure, but mono-repo is not the only way.
Re:Announcing GVFS: Git Virtual File System by CJefferson on Friday February 03, 2017 @12:54PM (#13561675)
I hadn't heard about Amazon. That's good to know.
Re:Announcing GVFS: Git Virtual File System by krallja on Friday February 03, 2017 @10:54PM (#13565560)
Read Steve Yegge's Google vs Amazon rant: it's amazing.

https://plus.google.com/+RipRowan/posts/eVeouesvaVX

Re:Announcing GVFS: Git Virtual File System by aanm1988 on Friday February 03, 2017 @12:20PM (#13561396)
> no-one is publicly admitting to using many small repos.

Amazon. They built an entire system around managing versions so that they can make it work.

Re:Announcing GVFS: Git Virtual File System by klodolph on Friday February 03, 2017 @09:27AM (#13559970)
The problem with this argument is that it doesn't really explain why large repos are wrong. It turns out the choice between monorepo and multi repo does not have a one-size-fits-all answer. Microsoft can make their own tooling, and internal tools don't have to run outside of Microsoft so they're easier to develop.

Google reportedly used to use Perforce for their monolithic codebase, and Facebook is supposed to use Mercurial with a bunch of modifications. They all have huge code bases mostly in one repo (I've heard Facebook had a >50GB Git repository, and Google's codebase is supposed to be in the TB range).

Re:Announcing GVFS: Git Virtual File System by ctdonath on Friday February 03, 2017 @09:15AM (#13559891)
"640k is enough for anyone."
Re:Announcing GVFS: Git Virtual File System by CJefferson on Friday February 03, 2017 @09:28AM (#13559972)
I don't see why there should be limits.

I recently ran some experiments, one file per experiment, one result file per experiment. At around 100,000 files, git started getting very upset. Why shouldn't I be allowed to have 100,000 files, or a million files, in a directory? Why should it be my job, as a user, to manually rearrange my data into a format my computer is happier with?

Re:Announcing GVFS: Git Virtual File System by garysieling on Friday February 03, 2017 @09:31AM (#13559994)
Being able to use git for things it's not designed for would be a strength, e.g. it works great as a database for certain kinds of projects.

I put all the records for https://www.findlectures.com in it, because then I can use diff tools for testing changes. Obviously this is nowhere near the size of the Windows codebase, but I could see a world where GVFS would be helpful for collaboration on this project.