Which is a better choice than Git for most projects, to be honest.
Which is a better choice than Git for most projects, to be honest.
No, people will happily destroy history. Git is just a tool.
In extremis, Fossil offers the "shun" command to remove improperly-committed artifacts, but even then it's subject to a lot of restrictions. (https://fossil-scm.org/fossil/doc/trunk/www/shunning.wiki)
Tools don't have opinions, people do. Fossil is just inflexible.
You don't want to alter history? Don't do it then. Git supports not altering history just fine.
Tools being more flexible is strictly a good thing. If they are misused, the person that misused them is responsible. It is that simple.
You're confusing a hosting service with being forced to use a centralized repository.
Take GitHub, for example. If git was centralized them you would not have forks, multiple remotes or multihosting, or could even work independently of the remote server.
With Git, you can even set up a repo in a network file system somewhere, or even a USB thumbrive.
Meanwhile SVN supports forking in the sense that it supports copying directories.
You are probably thinking of branches and tags, and those are used similarly in both systems. They are a bit more convenient in git since they are created in constant as opposed to linear time.
Copies in Subversion are only metadata. Since partial clones are native to the system, it is simple to present both branches and tags as file paths. It was likely considered an easy user interface. Everything is a file and all that. In comparison, git users must learn the git object naming scheme, otherwise things can end up very confusing should you have a directory and a branch with the same name.
I would argue that branches are nicer in git because it makes merging so much easier.
No, I was referring to forking projects, in the sense that Git allows for creating brand new and independent repositories that clone the version history up to a point in time and enable to add the origin Git repository as a remote repository.
SVN also does not support branching or tagging, as it actually supports only copying directories around a file system.
Linus seems to have a very different development model than almost all of the rest of us. And if Linus is asynchronous, then so is the codebase he maintains.
If you or I have eight different PRs going it’s because we have eight different promises being made to customers. Rejecting them has real consequences that we feel. For Linux many of those are externalities.
That's pretty subjective. Most engineers I interact with personally know how to use Git but not SVN. I'd argue the opposite is true base on my subjective experience.
Really depends on where/how you're using versioning, team familiarity, etc.
That’s a little too much to explain away with variability.
Atomic commits and file renames.
With time, the standard requirements rise and we get more demanding.
How about a VCS that not only diffs line by line but saves the diffs as editing delta?
Or that understands the syntax of the code and can differentiate a variable renaming from an actual code change?
Or connecting different repositories is hardly solved with Git. Submodules suck, grafting even more so. Or you can't make one repository out of two and keep their Git history intact.