Hacker News new | ask | show | jobs
by Someone1234 1870 days ago
All three points are really just the same point repeated three times: That it isn't part of core/official GIT ("stop gap" until official, irreversible to later official solution, and adds complexity that an official version would lack due to extra/third party tooling).

I'm frankly surprised GIT hasn't made LFS an official part by now. It fixes the problem, the problem is common and real, and GIT hasn't offered a better alternative.

If LFS was made official it would solve this critique, since that is really the only critique here.

2 comments

> All three points are really just the same point repeated three times

Absolutely not. Having worked with Mercurial LFS and Git LFS, the differences seem subtle but they are there. Basically,

In Mercurial, LFS is (to an extent) an implementation detail of how you check out a repository. It doesn't mean altering the repository contents itself (the data), it just means altering how you get that data. Contrast with Git LFS, where the data itself must be altered in order to become LFS data, and the "LFS flag" is recorded in history.

This is not something that you would solve by upstreaming LFS. You would need to redesign LFS.

LFS is definitely outside the scope of git.
It shouldn't be though.
Why do you think it should be within the scope of git?
Because it's something that lots of people want to use Git for, and because it would work better if it were a core part of Git.
okay, but why?

Lots of people want to use document databases as if they were relational, lots of people want to use their RDBMS as a file server and lots of people use spreadsheets for just about everything.

Lots of people wanting to use a product in certain way doesn't mean it's a good idea, nor that someone else should make that work for them that way

Ok but those are unreasonable things to do. Versioning large binary files is clearly not an unreasonable thing to want to do.
Maybe I want to use vim as an interactive WYSIWYG modeling program but that doesn't mean it's in the scope of the project.

LFS belongs in your build scripts, the model the git extension use doesn't even match the git VCS model.

Version control of large files is clearly a reasonable thing for a version control system to do.

I think if you introspect you'll see you are defending a flaw in something you like with spurious technical objections because you don't want to admit it isn't perfect. That's understandable. Happens a lot.