Live data from Hacker News

Why SQLite does not use Git (2018)

sqlite.org

281–290 of 454 posts

Re: Why SQLite does not use Git (2018)

#281
post #221

I think git gets a bad rep because no one can agree how to use it. GitHub PRs vs pushing a branch, rebase vs merge are just two examples of tools that do identical things in fundamentally different ways. And the problem is none of them are wrong. Rebasing minor commits simplifies unnecessary complexity in your history. Merging preserves what actually happened which can provide insight into why changes occurred. Of co…

To paraphrase Bjarne Stroustrup, there are only two kinds of version control systems: the ones people complain about and the ones nobody uses.

It's very much a "glass half full" perspective, which gets tiresome from somebody like Bjarne who is very resistant to the idea that he's made mistakes. It excuses lots of bad mistakes because hey, if people really felt that way they wouldn't use C++ right? But of course increasingly they aren't using C++ because it sucks, which is why they were complaining.

Unlike C++, Git has put considerable work into responding to complaints, understanding that while yes, they wouldn't complain if they didn't use it, they also wouldn't complain if there weren't so many things to complain about. Lots of things we use every day don't get many complaints because there's nothing much wrong with them. Even the brutal Git command line is less hostile today than it was originally.

Re: Why SQLite does not use Git (2018)

#282

Earlier quoted context omitted.

So it looks like you're ready for a change ... What's next on the horizon?

Generally git‘s support for a stacked PR workflow is poor [0], but imho that is the future of team collab (git is great for very asynchronously built projects, like the linux kernel). I also wonder, how much better git could be if it was based on DAGs not trees (I may want to use a changeset that is still developing in more than one branch without maintaining copies of it) and corollarily I‘d like to rebase subtrees…

> (I may want to use a changeset that is still developing in more than one branch without maintaining copies of it)

Not sure if you realize, but a commit is a state of all files in the repository, not a patch. Patches are calculated for you at display time (and can be calculated against any other commit, not just a parent). Sounds like you may be confused because of trying to apply a wrong mental model of how the repository represents things.

I'd say that git actually supports stacked workflows quite well. It's GitHub's PR model that makes it hard.

Re: Why SQLite does not use Git (2018)

#283

Earlier quoted context omitted.

> The world has non-text files that require version control support Which is fine, but saying that git is rubbish because it doesn't handle binary files as you want it to is a bad usecase. How version control would handle diffs between PDFs is not the same as photos, which is not the same as video. They have to be content aware for these sorts of things.

Well, to be frank, git doesn't really handle binary files _at all_. I don't really consider treating binary files as opaque blobs of data as 'handling them'. It's more akin to throwing your hands up and saying 'fuck it, we'll treat it like the text stuff and whatever happens, happens.' Yes, over time git has gained some capability for handling binary data as delta patches, but it is so far away from anything even rem…

Because no one is driving a universal content aware diff, as far as I can tell.

If you just want images then gitlab does a good enough job.

https://gitlab.com/gitlab-org/gitlab-test/-/commit/2f63565e7...

How would we represent video diffs? I don't deal with video so I'm not an expert, but there appears to be people complaining without suggesting solutions.

Re: Why SQLite does not use Git (2018)

#284
post #55
post #41

Earlier quoted context omitted.

I have no idea why Richard focuses on such things but: I'm old enough to remember when developers spent time making sure they could plow all of their build assets into a single binary distributable. It often had kind of a zest to it and when you dealt with software had directories full of stuff it looked both "corporate" and "sloppy". I've never quite gotten over the feeling that the piles of dynamically linked libra…

If you're using TLS/crypto in an app, it's scary to statically bundle those libraries.

In my practical experience the set of things that can go wrong if you link apps dynamically is much larger than the problems that arise when they are statically linked.

For one, it is more complicate to keep track of which of the many shared libraries on a typical system are used by which application. It is common that the same library occurs multiple times in different versions, built by different people/organizations and residing in different directories.

Quick, without looking: which TLS library do your network exposed subsystems use, which directories are they in and where did you install them from. When you do go to look: did you find what you expected?

Have a look at all the other shared libraries on your system. Do you know which binaries use them? Do you know which versions of which libraries work with which binaries? Do you trust the information your package manager has about version requirements? Does it even have that information?

Then there's the problem of what happens when you upgrade. The servers you run might have a rigorous battery of tests. But now you are running them with libraries they were not tested against. Sure, most of the time it'll work. But you don't know that. And you have no way of knowing that without downloading, building and running the tests. Or have someone else do that.

I've been in the situation where someone inadvertently updated a library in production and everything came crashing down. Not only did it take down the site, but it took a while to figure out what happened. Both because the person who did it wasn't aware of what they'd done. And the problem didn't manifest itself in a way that made the root cause obvious.

The clearest risk with statically linked binaries is if they are not updated when there is, for instance a security problem. But in practice I find that easier to deal with since I know what I'm running, and for anything important, I'm usually aware of what version it is or when I last checked for updates/problems.

Re: Why SQLite does not use Git (2018)

#285
post #198

Earlier quoted context omitted.

But a developer isn't using Windows.

Pretty much all game development still happens on Windows because that's where all (or at least most of) the gamedev tools and middleware libraries are.

It's also where 99% of businesses are, client-side. Not everything is Electron or the web.

Re: Why SQLite does not use Git (2018)

#286
post #6

I think the explanation does not make any sense in 2023, if 99.99% of dev use Git you have to use Git, using your own solution that no one else uses or know or need to know is bad. If you want to make your project more open to contribution you have to use what the rest of the industry is using. Edit: After reading some responses, I'm really surprised that sqlite does not accept contributions.

if 99.99% of dev use Git you have to use Git, using your own solution that no one else uses or know or need to know is bad. That's pretty much the opposite of progress. At one time, 99.9% of developers used CP/M. At time, 99.9% of web was done in PHP. At one time, 99.9% of developers IBM XTs. At one time 99.9% of developers used SourceForce and SVN. Stuff changes. Monoculture is bad for the tech industry.

>> 99.9% of developers used SourceForce and SVN.

SourceSafe!

Re: Why SQLite does not use Git (2018)

#287
post #257

Earlier quoted context omitted.

In fairness, the rate of change of any type of tool slows down over time as the problem domain becomes well understood. It's like the Joel on Software article (which annoyingly I can't find at the moment) about how software is always pretty much done by about version 4. His example was office software, especially Excel, and sure enough if you loaded Excel 4 today you'd see it does fundamentally all the main things. I…

I think mostly it will depend on what we will call the replacement to git. We might end up calling it 'git', too. Less weirdly: ethernet has been replaced a few times already, but they always just end up branding the replacement as a new version of 'ethernet'.

Many of those variations of ethernet remain compatible, 10g switches can often negotiate down to 10/100.

Re: Why SQLite does not use Git (2018)

#288
post #210

Made a list of all the revision control tools I've used over the decades, the year they were created, and the year I last used them: sccs 1973 2000 rcs 1982 2000 cvs 1990 2004 clearcase 1992 2004 perforce 1995 2011 subversion 2000 2015 mercurial 2005 2015 git 2005 present So, at least for me, they last around 15 years or so. But often time when I tell juinors that when they're my age, git will be distant a strange me…

Point could be made people don't really use git anymore - they use github as the primary interface. Branching, merging, review, etc.

Re: Why SQLite does not use Git (2018)

#289
post #36

I know about 5 git commands and have worked with gitflow and feature branch repos for years now. I can't say I've ever had to think about anything or longed for a better system. And yeah, I've also done the xkcd hack when things refuse to smash together. Works for me. As long as the Visual Code git blame extension keeps telling me line by line what ticket/issue was put when I'm happy.

I don't remember a single git command by heart, just there are some icons in the lower right corner of my Visual Studio window and in VSC window and it's pretty obvious what to do.

Re: Why SQLite does not use Git (2018)

#290
post #265

Earlier quoted context omitted.

> I also wonder, how much better git could be if it was based on DAGs not trees [...] Git generally supports DAGs. > [...] corollarily I‘d like to rebase subtrees (sub-DAGs) instead of single branches. Rebasing is something you do to the commit graph, which is a DAG. Branches only come in incidentally. Branches in git are really just mutable pointer to immutable commits. What you are describing is probably some usefu…

Not only it's useful, it's as easy to do in git as typing `git rebase -r`. Recently it even gained support for rewriting branch pointers in the process.

Do you mean it can rewrite branch pointers that pointed to intermediate commits? How?
Post reply on HN