Most active commenters
  • eru(12)
  • baq(7)
  • mhh__(5)
  • SCdF(4)
  • spookie(4)
  • flohofwoe(4)
  • int_19h(4)
  • moralestapia(3)
  • mmis1000(3)
  • OtomotO(3)

←back to thread

848 points thefilmore | 174 comments | | HN request time: 1.742s | source | bottom
1. bandrami ◴[] No.43969975[source]
Pretty cool that Linus Torvalds invented a completely distributed version control system and 20 years later we all use it to store our code in a single place.
replies(29): >>43969999 #>>43970002 #>>43970008 #>>43970018 #>>43970019 #>>43970028 #>>43970031 #>>43970032 #>>43970036 #>>43970037 #>>43970142 #>>43970154 #>>43970198 #>>43970282 #>>43970314 #>>43970343 #>>43970418 #>>43970419 #>>43970431 #>>43970434 #>>43970451 #>>43970472 #>>43970541 #>>43970904 #>>43971268 #>>43971299 #>>43971387 #>>43971586 #>>43988717 #
2. moralestapia ◴[] No.43969999[source]
Care to explain?
replies(2): >>43970010 #>>43970011 #
3. IshKebab ◴[] No.43970002[source]
Plenty of people use Codeberg and Gitlab. And it's still distributed - I don't need to lock files and ask coworkers if I can work on them.

Maybe if Git had native support for PRs and issues this wouldn't have happened. (And yes I'm aware of git send-email etc.)

replies(3): >>43970054 #>>43970113 #>>43970150 #
4. ratatoskrt ◴[] No.43970008[source]
To be fair, Git itself is a bit of a pain, and GitHub's main achievement is/was to make it somewhat bearable.
replies(3): >>43970020 #>>43970066 #>>43970187 #
5. aucisson_masque ◴[] No.43970010[source]
Linus Torvalds invented git, which is what's used by GitHub and others like gitlab.
replies(1): >>43972770 #
6. joha4270 ◴[] No.43970011[source]
If GitHub went down, how much would it impact the open source world?

Sure, there would be local copies everywhere, but for a distribution version control system, it's pretty centralized at GitHub

replies(2): >>43970061 #>>43972777 #
7. SCdF ◴[] No.43970018[source]
I get what you're saying, but tbf hosting on github doesn't (yet!) box you out of just moving back to that system. It's still just git. It's still distributed, in the sense that if github goes down you could still generate patches and email them around, and then push back to github when it's back.

Everything surrounding code: issues, CICD, etc, is obviously another story. But it's not a story that is answered by distributed git either. (though I would love a good issue tracking system that is done entirely inside git)

replies(9): >>43970039 #>>43970120 #>>43970143 #>>43970151 #>>43970180 #>>43970299 #>>43970301 #>>43970480 #>>43970514 #
8. vasco ◴[] No.43970019[source]
Most people have it at least in two places if they work alone and in many places if they work with others. Having a consistent central UI doesn't take away from the distributed part, while adding a bunch of goodies.
9. casenmgreen ◴[] No.43970020[source]
I regard the Git docs as being fully equal to scientific Wikipedia articles.

Everything is fully and completely explained, in terms which mean nothing.

replies(1): >>43970349 #
10. baq ◴[] No.43970028[source]
When you clone a repo you store it on your computer, too. Don’t confuse version control with CI servers/bug trackers/software forges.
11. sorbusherra ◴[] No.43970031[source]
which is also owned by microsoft, that uses github data to train large language model. So, after decades of trying to kill linux and sabotage it, they finally figured out how to own it.
replies(1): >>43970288 #
12. littlestymaar ◴[] No.43970032[source]
Moving to git is understandable (Mozilla was using mercurial) but Github, really?

It's not like the hairy C++ code base of Firefox will suddenly become less scary and attract more open source developers simply because it's moving to Github.

13. snickerbockers ◴[] No.43970036[source]
ironically hardly anybody outside of the linux kernel community uses it the way it was intended lol.

Didn't all this start with Linus getting into a spat with the bitkeeper dev involving some sort of punitive measure as a response to somebody making a reverse-engineered FOSS client? I don't remember the details and I'm sure I have at least half of them wrong, but that's easily one of the most disastrous decisions in the history of the software-business right up there with valve turning down minecraft and EA refusing to make sports games for the SEGA dreamcast (that last one isn't as well known but it led to SEGA launching the 2k sports brand to which outlasted the dreamcast and eventually got sold to a different company but otherwise still exists today and is still kicking EA's ass on basketball games).

replies(4): >>43970051 #>>43970117 #>>43970308 #>>43970378 #
14. lmm ◴[] No.43970037[source]
Turns out the important part wasn't the distributed-ness at all (unless you count being able to work offline). Many such cases.
replies(1): >>43970133 #
15. littlestymaar ◴[] No.43970039[source]
> Everything surrounding code: issues, CICD, etc, is obviously another story

That's what Github is though, it's not about the code itself it's about all your project management being on Github, and once you move it, moving out isn't realistic.

replies(6): >>43970041 #>>43970050 #>>43970059 #>>43970073 #>>43970450 #>>43970597 #
16. xboxnolifes ◴[] No.43970041{3}[source]
Sure, but then we are no longer talking about git.
17. enos_feedler ◴[] No.43970050{3}[source]
And how are we suppose to solve this problem? By creating distributed versions of every possible component of every piece of software? Seems unrealistic. I think we should be grateful that the core underlying protocol for the most important data has the distributed properties we want. It's a lot more than we can say vs. lots of other platforms out there.
replies(3): >>43970087 #>>43970202 #>>43971124 #
18. formerly_proven ◴[] No.43970051[source]
It would've made sense to change many defaults in git for "normal users" ages ago (git 2?) instead of keeping the kernel-workflow defaults.
19. mmis1000 ◴[] No.43970054[source]
I think it would be great if git have some kind of soft lock by default (like attach a text on some file without make it into actual commit). It could probably make peoples' live easier when you and teamates need to communicate what files you are changing thus reduce the chance of conflict.
replies(2): >>43970149 #>>43970543 #
20. SCdF ◴[] No.43970059{3}[source]
Right, but distributed git As Torvalds Intended™ doesn't solve those problems, so it's not related.

For the actual event we are commenting on, they have disabled all features other than code hosting and PRs.

replies(1): >>43970118 #
21. kgeist ◴[] No.43970061{3}[source]
If GitHub went down, the code would be fine (just announce a new official URL), but the main thing that would be lost is issues and pull requests. Maybe Git should add official support for issues and pull requests in its metadata to be fully decentralized.
replies(2): >>43970188 #>>43970495 #
22. mmis1000 ◴[] No.43970066[source]
In some sense, git is actually like advanced zip versioning system. A commit is literally just a snapshot of code base except it tell you what is the previous version of this version.

Also, git store the files in a smarter way so file size won't explode like zip versioning.

replies(1): >>43970360 #
23. tigroferoce ◴[] No.43970073{3}[source]
GitHub is about the community. There are others alternatives, more in line with what Mozilla claim to be their view (I'm thinking to GitLab, for instance), but nothing gives you visibility like GitHub.

Sad to see that Mozilla is becoming less and less what they promised to be once Google funding are depleting.

24. groestl ◴[] No.43970087{4}[source]
> And how are we suppose to solve this problem? By creating distributed versions of every possible component of every piece of software? Seems unrealistic.

That's how we started out.

replies(1): >>43970252 #
25. mhh__ ◴[] No.43970113[source]
Git should have issue support or something like it as a convention but pull requests are an abomination that we are stuck with. No thank you.
replies(3): >>43970148 #>>43970157 #>>43970328 #
26. vintermann ◴[] No.43970117[source]
> Didn't all this start with Linus getting into a spat with the bitkeeper dev

It's a joke that the bitkeeper dev has two revision control named after him, Mercurial and Git.

replies(1): >>43970271 #
27. Flimm ◴[] No.43970118{4}[source]
It's impossible to disable PRs on GitHub, sadly. See https://github.com/dear-github/dear-github/issues/84
replies(1): >>43970714 #
28. sublinear ◴[] No.43970120[source]
IIRC Phabricator stored most of it's metadata in git-notes. In theory we could have been making tools compatible with such a format all this time.
29. globular-toast ◴[] No.43970133[source]
Oh it is, but I think people forget what the distributed model gets you. It isn't just about having a completely decentralised workflow. When you clone a repo you have everything you need to keep working on that project. You have your own copy of all the branches which you are free to do whatever you want with. This is what makes it fast. Every clone has a brand new master branch and you never needed to ask anyone or get agreement to get your own branch to work on. Commits on your branch will never interfere with anyone else's work. You don't need to lock files and complete your work as quickly as possible. You can do as many commits as you like, a hundred in a day is not unheard of, because it's your branch. Previously people would commit once a day at most and sometimes not even until the end of the week, which is just unthinkable to a git user. A git clone is your own personal repo which allows you to use version control before you even share anything with anyone.
replies(2): >>43970273 #>>43970396 #
30. OtomotO ◴[] No.43970142[source]
I find this comment really interesting, because NONE of my clients in the last 10 years of (self-) employment had even a single codebase on GitHub.

I am contributing to a few open source projects on GitHub here and there though.

replies(1): >>43970510 #
31. sshine ◴[] No.43970143[source]
> if github goes down you could still generate patches and email them around, and then push back to github when it's back.

You could, but generally people can’t. They learn a set of narrow workflows and never explore beyond. GitHub use translates into GitLab use, but not into general git use workout a central repository.

> Everything surrounding code: issues, CICD, etc, is obviously another story. But it's not a story that is answered by distributed git either. (though I would love a good issue tracking system that is done entirely inside git)

Radicle offers one. CLI-based, too.

replies(4): >>43970191 #>>43970214 #>>43970429 #>>43970525 #
32. kace91 ◴[] No.43970148{3}[source]
Can you expand on that? I’m probably younger but I can’t imagine a more comfortable way to review code.
replies(3): >>43970331 #>>43970946 #>>43974284 #
33. spookie ◴[] No.43970149{3}[source]
Yeah, especially binaries.
34. qwertox ◴[] No.43970150[source]
In Codeberg, how does one even search for files containing a given string? Probably the #1 thing I do on GitHub is searching for files in a project containing a given string.
replies(3): >>43970190 #>>43970201 #>>43971145 #
35. account-5 ◴[] No.43970151[source]
This is why I like fossil, it comes with most of the stuff I use built in, and you can deploy it as a website too. Use it for all of my personal projects and used it extensively for coursework at university.
replies(1): >>43971110 #
36. Barrin92 ◴[] No.43970154[source]
It's no more surprising than the fact that we invented distributed protocols to talk online and yet people use gmail or Facebook rather than sending data over the wire themselves.

People who are very insistent on distributed solutions never seem to understand that the economic, social and organizational reasons for division of labor, hierarchy and centralization didn't suddenly go away.

37. captn3m0 ◴[] No.43970157{3}[source]
Not Git, but several forges are working towards an ActivityOub based federation format for these: https://f3.forgefriends.org/
38. frizlab ◴[] No.43970180[source]
Like fossil?
replies(1): >>43970516 #
39. spookie ◴[] No.43970187[source]
To be fair, most of the its difficulty is realized when you're stuck with a teammate rewriting history. Who, much like anyone anyone doing the same, hasn't bothered reading a book explaining things.
replies(3): >>43970280 #>>43970348 #>>43970388 #
40. nurumaik ◴[] No.43970188{4}[source]
Fully decentralized metadata so we can finally have merge conflicts in PR comments while discussing merge conflicts
41. sph ◴[] No.43970190{3}[source]
Given how terrible GitHub search in files is, what I usually do is clone the repo and run ripgrep.
replies(3): >>43970268 #>>43970391 #>>43970500 #
42. lucianbr ◴[] No.43970191{3}[source]
People could learn, if there was suddenly a need. Just like they learned the narrow workflows they use now.
43. johannes1234321 ◴[] No.43970198[source]
The reason is that it is more than code. Managing identity is hard and for many projects besides having a source of truth for the repository you also need some degree of project management (bug tracking)

And: Even though source of truth is centralized for many projects in GitHub, git still benefits from being distributed: It's the basis for "forks" on VithUb and for the way people develop. Ja jung the clone locally and committing locally and preparing the change set for review. In the CVS/SVN days one had to commit to the ce teal branch way sooner and more direct.

replies(1): >>43970344 #
44. jimbob45 ◴[] No.43970201{3}[source]
That exact exercise filled a quarter of my workday today.
45. hnlmorg ◴[] No.43970202{4}[source]
As a GitHub user myself, I don’t disagree with your point. However I’d like to say that this isn’t quiet as different a problem to solve as it might first appear:

The issue tracking can be a branch and then you just need a compatible UI. In fact some git front ends do exactly this.

CI/CD does already exist in git via githooks. And you’re already better off using make/just/yarn/whatever for your scripts and rely as little on YAML as possible. It’s just a pity that githooks require users to set up each time so many people simply don’t bother.

46. flohofwoe ◴[] No.43970214{3}[source]
> They learn a set of narrow workflows and never explore beyond.

And tbh, that's how it should be for a version control system. Before git with its byzantine workflows and a thousand ways to do the same thing, version control (e.g. svn) was a thing that's just humming along invisibly in the background, something that you never had to 'learn' or even think about, much like the filesystem.

I don't need to know how a filesystem works internally to be able to use it.

And having a centralized store and history helps a lot to keep a version control system conceptually simple.

replies(5): >>43970218 #>>43970262 #>>43970270 #>>43970425 #>>43970565 #
47. AStonesThrow ◴[] No.43970218{4}[source]
https://m.xkcd.com/1597/
48. baq ◴[] No.43970252{5}[source]
Maybe that's the reason everything tends to get centralized.
replies(1): >>43971381 #
49. baq ◴[] No.43970262{4}[source]
svn was not 'humming' unless you confined yourself to a very narrow set of functionality, e.g. merging was best left to experts.
replies(1): >>43970323 #
50. eXpl0it3r ◴[] No.43970268{4}[source]
Not sure when you tried last, but it's gotten a lot better over the years. If you need something from the latest master, you'll be able to find it.
51. writebetterc ◴[] No.43970270{4}[source]
You don't need to learn how git works internally to be able to use it. You need to know a lot about filesystems in order to use them: Folders, files, symbolic links, copy, cut, paste, how folders can exist on different devices, etc. There's just a tonne of assumed knowledge regarding them, and it's very obvious when you meet someone that doesn't have it (regular people often don't have all it).

Subversion also isn't some thing humming along invisibly in the background, it has its own quirks that you need to learn or you'll get stung.

52. bitwize ◴[] No.43970271{3}[source]
I've heard the one that says much like Linux, Git is named after Linus himself.
replies(1): >>43981301 #
53. spookie ◴[] No.43970273{3}[source]
Yup. It's an extremely powerful workflow, you won't fear trying new ideas, you aren't fully commited to them (hehe).
54. baq ◴[] No.43970280{3}[source]
If you don't rewrite history in git, I don't want to bisect in your repos.

If you push rewritten history to master, you're a git.

Conclusion: learn your tools.

replies(2): >>43970414 #>>43988211 #
55. ahoka ◴[] No.43970282[source]
Git wouldn't be mainstream without GitHub though.
replies(1): >>43970311 #
56. masfoobar ◴[] No.43970288[source]
As a Free software supporter, its just a matter of time before we lose out on our freedoms. Honestly, once Linus retires I do think Linux will continue to thrive with a good team but Linux, the kernel, will either have to adapt to current times (whatever that can be in the future) or something else will replace it and, likely, some AI aspect on top.

It wont be free software and, likely, it will be Microsoft.

replies(1): >>43971212 #
57. dijit ◴[] No.43970299[source]
> Everything surrounding code: issues, CICD, etc, is obviously another story. But it's not a story that is answered by distributed git either. (though I would love a good issue tracking system that is done entirely inside git)

Embrace, Extend..

(largely this is unfair, as plain git leaves much to be desired- but you can’t deny that the things surrounding git on github are very sticky).

replies(2): >>43970365 #>>43970648 #
58. rablackburn ◴[] No.43970301[source]
>> I would love a good issue tracking system that is done entirely inside git

You might like git-bug:

https://github.com/git-bug/git-bug

replies(1): >>43971681 #
59. midnightclubbed ◴[] No.43970308[source]
EA not making sports games for Dreamcast wasn’t a bad decision for EA. It cost Sega a huge amount of money to produce and license their own sports games exclusively for Dreamcast, not having EA sports was a huge blow.

And while NBA 2k destroyed NBA Live it took until 2009 for that to start happening (long after Sega ownership), mainly down to sliding standards in EA’s NBA Live titles and eventually some disastrous EA launches.

replies(1): >>43970387 #
60. dijit ◴[] No.43970311[source]
It might feel like that now, but in 2011 github was just one of a bunch of code forges and at the time they were all similar in quality.

Gitorious was chosen for the meego/maemo team for example.

replies(1): >>43970413 #
61. novaRom ◴[] No.43970314[source]
Linus Torvalds is one of those people whos impact on the world is significant even if he was not driven by financial initiative. It’s crazy how much one person can change things just by solving their own problems really well.
replies(1): >>43970484 #
62. flohofwoe ◴[] No.43970323{5}[source]
In a centralized version control system with a single history, branching and merging is also much less important.

In git, working on your own branch is essential to not step on other people's feet and to get a clean history on a single main/dev branch (and tbf, git makes this easy for devs and text files). With a centralized version control system, both problems don't even exist in the first place.

When we did game development with a team of about 100 peeps (about 80 of those non-devs, and about 99% of the data under version control being in binary files) we had a very simple rule:

(1) do an update in the morning when you come to work, and (2) in the evening before you leave do a commit.

Everybody was working on the main branch all the time. The only times this broke was when the SVN server in the corner was running full and we either had to delete chunks of history (also very simple with svn), or get more memory and a bigger hard drive for the server.

63. eru ◴[] No.43970328{3}[source]
Git was invented with pull requests in mind. It's just that they were originally meant to be sent via email, not on the web.
64. eru ◴[] No.43970331{4}[source]
Pull requests are great, but the typical github UI isn't necessarily the best way to review code.

It's often useful. But sometimes you want to use other tools, like firing up your editor to explore.

replies(1): >>43974277 #
65. tester756 ◴[] No.43970343[source]
Why should we care about what Linus invented?
66. eru ◴[] No.43970344[source]
Yes, in git you get the benefit of fine-grained version control while you are still exploring.

Then later on for the PR, you can sanitise the whole thing for review.

In the bad old days, you only got the latter. (Unless you manually set up an unrelated repository for the former yourself.)

67. tester756 ◴[] No.43970348{3}[source]
No, git's CLI is terrible mess.
68. eru ◴[] No.43970349{3}[source]
I find both Wikipedia and Git docs typically more useful than this. Much more.

(They ain't perfect, of course.)

replies(1): >>43971462 #
69. eru ◴[] No.43970360{3}[source]
> A commit is literally just a snapshot of code base except it tell you what is the previous version of this version.

Or previous versions. Plural. Yes.

Well, that's one half of git. The other half is tooling to work with the snapshots and their history, eg to perform merges.

replies(1): >>43972429 #
70. wordofx ◴[] No.43970365{3}[source]
Build a bridge and…
71. eru ◴[] No.43970378[source]
That's how git started.

But there were already quite a handful of other distributed version control systems around by the time git showed up.

So if Linus hadn't written git, perhaps we would be using darcs these days. And then we'd be debating whether people are using darcs the way it was intended. Or bazaar or monotone or mercurial etc.

I don't think what the original authors of any one tool intended matters very much, when there were multiple implementations of the idea around.

72. rowanG077 ◴[] No.43970387{3}[source]
I don't see how EA creating their biggest rival is anything but a bad decision for them. Had they licenses they would have a monopoly and probably millions of more sales.
73. jamienicol ◴[] No.43970388{3}[source]
That problem is solved by preventing forced pushes. Rewriting history locally is encouraged.
replies(1): >>43970859 #
74. nicce ◴[] No.43970391{4}[source]
If the repository is indexed, there isn’t really competitive search. You can find blog posts about it. They actually used ripgrep at some point. (not anymore I guess because too slow?).

Edit: ripgrep was just a test

More: https://github.blog/engineering/the-technology-behind-github...

75. eru ◴[] No.43970396{3}[source]
> You have your own copy of all the branches which you are free to do whatever you want with.

That's the default. But git would work just as well, if by default it was only cloning master, or even only the last few commits from master instead of the full history.

You can get that behaviour today, with some options. But we can imagine an alternate universe were the defaults were different.

Most of what you say, eg about not needing lockfiles and being able to make independent offline commits, still applies.

replies(1): >>43970659 #
76. petepete ◴[] No.43970413{3}[source]
In those days GitHub probably had more eyes on it in a day then Gitorious did in a quarter.

And I am one of the people saddened by the convergence on a single platform.

But you can't deny, it's always been pretty great.

replies(1): >>43974513 #
77. mkesper ◴[] No.43970414{4}[source]
The modern workflow is just to let GitHub squeeze yor shit commits into one and then rebasing that.
replies(3): >>43970622 #>>43971671 #>>43976065 #
78. ghosty141 ◴[] No.43970418[source]
I don't get this. Git is still distributed, even if the "main" repo is on github, everybody still has a local copy. You are confusing project management (which github effectively does) and git. Git is still git, github is just a project management tool with git integration.

In the Linux kernel the project management is done via email (which is also just a centralized webserver in the end), so whats the problem?

replies(1): >>43970474 #
79. phire ◴[] No.43970419[source]
People have forgotten just how bad centralised version control was in 2005.

If you weren't connected to the internet, you couldn't do a thing. You couldn't checkout. You couldn't commit. You could create branches. The only thing on your computer was whatever you checked out last time you were connected to the server.

People talk about SVN, but it wasn't that common in 2005. None of the project hosting platforms (like SourceForge) supported SVN, they were all still offering CVS. If you wanted to use SVN, you had to set it up on your own server. (From memory, google code was the first to offer SVN project hosting in mid-2006). Not that SVN was much better than CVS. It was more polished, but shared all the same workflow flaws.

Before Git (and friends), nothing like pull-requests existed. If you wanted to collaborate with someone else, you either gave them an account on your CVS/SVN server (and then they could create a branch and commit their code), or they sent you patch files over email.

The informal email pull requests of git were an improvement... though you still needed to put your git repo somewhere public. Github and its web-based pull requests were absolutely genius. Click a button, fork the project, branch, hack, commit, push, and then create a formal "pull request". It was nothing like centralised project management systems before it. A complete breath of fresh air.

replies(3): >>43970667 #>>43970673 #>>43971591 #
80. vishnugupta ◴[] No.43970425{4}[source]
svn was a nightmare when it came to handling conflicts. So at least for me, humming in the background wasn’t the term used for it at work.
replies(1): >>43970929 #
81. arp242 ◴[] No.43970429{3}[source]
"I only accept patches and bug reports over email" is just as much of a narrow set of workflows as "I only accept patches and bug reports through PRs".
82. TZubiri ◴[] No.43970431[source]
pretty cool that we have a distributed version control system but people still complain that the distributed version control system is not itself hosted on a public distributed version control system like a ouroubouros of transparency so transparent that you can't even see the thing and you lose it because you don't know where it is and you lose yourself in a maze of infinitely branching dependency tree of self hosted bug trackers and federated account systems so that you can keep track of your bug reports and compile the bug tracker from scratch and all of a sudden you are building linux and you want to report a linux bug, but you need to send an email so you build an HTTP server but you don't have a C compiler yet so you download the latest C source code, but you don't have a C compiler to compile it, so you just make a github account and learn to compromise on your ideals welcome to adulthood.
83. csomar ◴[] No.43970434[source]
distributed # decentralized. The point of distributed is to keep a copy of your own. The point of decentralized is to not have a central point of authority.
84. arp242 ◴[] No.43970450{3}[source]
GitHub has a fairly extensive API without too many limits AFAIK. You can definitely migrate all your data to $something_else if you want to.
85. contravariant ◴[] No.43970451[source]
I'm fine with it as long as ssh still works.
86. NexRebular ◴[] No.43970472[source]
It really is a tragedy that git monoculture is winning over Mercurial, Fossil and other better designed alternatives. Don't even have a nice github-like service for Mercurial anymore as Bitbucket decided to give up.
replies(3): >>43971061 #>>43971178 #>>43973199 #
87. miyuru ◴[] No.43970474[source]
The problem is lot of Dev tools has centralized on GitHub, so much so that we cannot use IPv6 only servers for development because GitHub does not support IPv6.

From what I use composer and brew relies on GitHub to work.

https://github.com/orgs/community/discussions/10539

88. Sander_Marechal ◴[] No.43970480[source]
Gitlab is working on using ActivityPub for interoperability between instances. See: https://handbook.gitlab.com/handbook/engineering/architectur...
89. ◴[] No.43970484[source]
90. joha4270 ◴[] No.43970495{4}[source]
Yes, as a I mentioned there is plenty of local copies of the code floating around.

Everything else... as the original comment said, is pretty centralized for a decentralized system.

91. mrweasel ◴[] No.43970500{4}[source]
But Github is actually pretty good at searching for something across all files in a repo.
replies(1): >>43971336 #
92. voidspark ◴[] No.43970510[source]
GitHub is not Git.

Git is by far the most widely used VCS. The majority of code hosting services use it.

replies(1): >>43974224 #
93. nextaccountic ◴[] No.43970514[source]
Unfortunately the project is not just code. It also has issues, PRs and other stuff. Github has two kinds of lock in, a) your stuff is there and if you move elsewhere you probably will wipe your issues etc (huge loss of institutional knowledge), and b) there is a network effect because everyone has a github account and people are used to just hop on a repository and file an issue (rather than being greeted by a log in page), cross-reference issues between repositories (hard to make work if repos aren't in the same site, unless both sites use some interop thing like activitypub which github will never use), etc

> Everything surrounding code: issues, CICD, etc, is obviously another story. But it's not a story that is answered by distributed git either. (though I would love a good issue tracking system that is done entirely inside git)

There is https://github.com/git-bug/git-bug - would love if people started o use it, even in a read only way: use github issues normally, but also have a bot that saves all coments to git-bug, so that i can read issues without an internet connection. Then, at a later date, make it so that people that make issues on git-bug also gets the issue posted on github, making a two way bridge.

Then, optionally, at a later stage when almost everyone migrated to git-bug, make the github issues a read only mirror of the git-bug issues. Probably not worth it: you lose drive-by comments from newcomers (that already have a github account but probably never heard of git-bug), raising the friction to report bugs

replies(3): >>43970562 #>>43970653 #>>43970726 #
94. kaichanvong ◴[] No.43970516{3}[source]
while --it-is possible seeing how fossil confuses, for the Github conversation, it's not really in the same category, conversation, some clever happenings happening within fossil-scm, however, it's not really the same as the problem design-led github solves given people saying downtimes; sure, git, github; however how people using github, different–similar, git, however, github.

However, were you to say liken-able (slang keywords: comparative something else--) of, "fossil with git-github", then again: no.

Good call were the conversation (comments, almost interchangeable at-times haha!) being, everyone use git for Firefox, something kinda wild-topic!

replies(1): >>43973099 #
95. laserbeam ◴[] No.43970525{3}[source]
> You could, but generally people can’t. They learn a set of narrow workflows and never explore beyond.

The point is you CAN. Joe can in theory do it, and Steve can make an alternative piece of software to do it for Joe. In most other centralized places (like social media), you CANNOT. Joe cannot take his data off of Facebook and interact with it outside of the platform or move it to another platform.

96. m-schuetz ◴[] No.43970541[source]
I have no use for a distributed source control system. I want my stuff consolidated at one place.
97. mashlol ◴[] No.43970543{3}[source]
FWIW git lfs does have support for locking files.
98. SCdF ◴[] No.43970562{3}[source]
> Unfortunately the project is not just code.

The literal project we are discussing is just code. It's literally just code. It doesn't have issues, PRs are disabled as much as they can be (by a GitHub action that automatically closes all PRs with a note that code should be submitted elsewhere), and all "other stuff" is disabled.

https://github.com/mozilla-firefox/firefox

replies(2): >>43970638 #>>43980206 #
99. guappa ◴[] No.43970565{4}[source]
Have you ever actually used svn?
replies(1): >>43970815 #
100. LtWorf ◴[] No.43970597{3}[source]
I managed to move to codeberg all my projects. There's everything except the secret deals with pypi to directly publish from github. Which is massively insecure anyway.
101. baq ◴[] No.43970622{5}[source]
Hardly anything modern about it, but it's a way of keeping a somewhat sane history. Certainly better than merging 'fix' 'fix' 'fix comments' into master.

The thing is, we could have done better (and have been) since before git even existed.

102. elAhmo ◴[] No.43970638{4}[source]
What you are referring to is more of a mirror-like approach usage of GitHub.

Some big repos or organizations might be able to pull this off, but good luck having a small project and then directing users to go through all of those hoops to submit issues somewhere else, open PRs somewhere else, etc.

103. blueflow ◴[] No.43970648{3}[source]
Lets pray that Microsoft won't use Github to find new ways to extract money.
104. mkingston ◴[] No.43970653{3}[source]
I was reading the git-bug documentation and found "bridges" to third-party platforms:

https://github.com/git-bug/git-bug/blob/master/doc/usage/thi...

I have not tried it.

105. globular-toast ◴[] No.43970659{4}[source]
The point wasn't really about having your own copy of the commit history, it's about having your own copy of the refs (which is all a branch is in git). Basically, your master branch is not the same branch as GitHub's master branch or anyone else's. This is one of the things people don't really seem to understand about git. It means you don't have to do the "feature branch" thing, for example, you can just do commits on your master branch then submit a PR.
replies(1): >>43979359 #
106. guappa ◴[] No.43970667[source]
A patch over email is how git works too!
107. chgs ◴[] No.43970673[source]
Pull requests aren’t part of git. They are a feature of one implementation.
replies(2): >>43971066 #>>43971104 #
108. SCdF ◴[] No.43970714{5}[source]
Interestingly mozilla has effectively done this here, by using a GitHub action that automatically closes any PR with a message explaining that PRs are not to be used.

It's very silly they have to do this, but at least they can I suppose.

109. aktau ◴[] No.43970726{3}[source]
This is one area where Gerrit Code Review is (was? I don't know if it changed) is superior. It stores everything it knows about in git repositories (preferences in a separate meta git repository, comments, patches). With the right refspec, you can pull it all down and have a full backup.
110. flohofwoe ◴[] No.43970815{5}[source]
Yes for about 18 years(?) in the context of game development (I don't exactly remember when we had switched from cvs to svn, but it must have been around 2003..2005) in teams up to about 100 people, working copy sizes up to about 150 GB (with most of the data being binary game asset files), and everybody working on trunk (we only used branches for releases which were branched off trunk but never merged back, only cherry-picking bugfixes from the main into release branches as needed).

We used TortoiseSVN as UI which worked well both for devs and non-devs.

With this sort of setup, git would break down completely if it weren't for awkward hacks like git-lfs (which comes with its own share of problems).

replies(1): >>43978342 #
111. Tainnor ◴[] No.43970859{4}[source]
Prevent forced pushes on protected branches (develop, main, hotfix etc.). I don't care if somebody force pushes their private feature branch.
replies(1): >>43971661 #
112. starspangled ◴[] No.43970904[source]
Really? You rm -rf your working trees each evening before you finish, and git clone them from github in the morning? :)

I store my code in a completely distributed fashion, often in several places on different local devices (laptop, build server, backup, etc) not to mention on remote systems. I use github and gitlab for backup and distribution purposes, as well as alternative ways people can share code with me (other than sending patch emails), and other people use git to get and collaborate on my work.

distributed version control system doesn't mean distributed storage magically happens. You still need to store your code on storage you trust at some level. The distributed in DVCS means that collaboration and change management is distributed. All version control operations can be performed on your own copy of a tree with no other involvement. Person A can collaborate with person B, then person B can collaborate with person C without person A being in the loop, etc.

113. flohofwoe ◴[] No.43970929{5}[source]
This was only for true before svn 1.5 (before it had 'merge tracking'). Also, branching and merging by far wasn't as essential in svn as it is in a decentralized version control system like git. In a centralized version control system it works perfectly well to do all development in the main branch, and only branch off dead-end 'release branches' which are never merged back.

Tbh, I really wonder where the bad reputation of svn is coming from. Git does some things better, especially for 'programmer-centric teams'. But it also does many things worse, especially in projects where the majority of data is large binary files (like in game development) - and it's not like git is any good either when it comes to merging binary data.

114. baq ◴[] No.43970946{4}[source]
It’s only good if you haven’t tried anything else. Check out gerrit, but there are many more tools and workflows.

Note we’re talking about the GitHub UI mostly. Pulling and merging a remote branch is a basic git operation, almost a primitive.

115. 1wd ◴[] No.43971061[source]
heptapod is GitLab with Mercurial support.
replies(1): >>43971391 #
116. dezgeg ◴[] No.43971066{3}[source]
git request-pull is.
117. phire ◴[] No.43971104{3}[source]
This 2007 talk [1] of Linus Torvalds promoting git to Google was how many people were introduced to the concept of git in those days before GitHub, I remember watching it myself. Emails requesting other maintains to pull your branch was very much the suggested workflow around git.

And it was actually part of git. Even back in 2005, git included a script git request pull that generated these pull request emails. I'm pretty sure people called these emails "pull requests" before GitHub came along.

[1] https://www.youtube.com/watch?v=4XpnKHJAok8

118. int_19h ◴[] No.43971110{3}[source]
The annoying thing about Fossil is that it doesn't let you squash commits, not even in your private branches - they have some kind of philosophical point about that.

If you happen to agree with it, then yeah, it's great. If you like to commit quick and dirty and then tidy it up by squashing into logically complete and self-consistent commits, too bad.

replies(1): >>43971495 #
119. int_19h ◴[] No.43971124{4}[source]
By storing issues etc in the repo itself. A git repo is just a generic object graph, after all, and objects don't necessarily describe files.

There are several such solutions already. The problem is that neither of them is popular enough to become a de facto standard. And, of course, centralized git providers like GitHub have a vested interest in keeping in this way, so they are unlikely to support any such solution even if it does become popular enough.

replies(1): >>43978369 #
120. throwaway290 ◴[] No.43971145{3}[source]
I'm not being sarcastic but how do you do it on github?;) it basically never works

Not only results are incomplete but it seems once they went into training LLMs on all code they host they made sure no one else can do the same easily and so now everything is madly rate limited.

Every time I just clone and grep.

121. int_19h ◴[] No.43971178[source]
This happened mostly because the benefits of those other tools over git are so marginal that they don't provide a strong motivation to pick them over git unless everything else is equal. With GitHub in the picture, everything else is not equal, and so...
122. guappa ◴[] No.43971212{3}[source]
Linus doesn't care about free software. You're thinking of rms.
replies(1): >>43973261 #
123. ignoramous ◴[] No.43971268[source]
That gives too much credit to git and way too less to Preston-Werner, Wanstrath, Hyett, & Chacon, and many others: https://www.youtube-nocookie.com/embed/mGTpU5XUAA8
124. Double_a_92 ◴[] No.43971299[source]
How is it a single place if every dev has a full copy of the repository? Also unless it's some software that each user customizes and builds for themselves, you still need some kind of way to tell which is the official version.
125. IshKebab ◴[] No.43971336{5}[source]
Not remotely as good as grep.app.
replies(1): >>43977904 #
126. groestl ◴[] No.43971381{6}[source]
It's an emergent phenomenon, it requires less energy expenditure overall. It's also the way of the Dodo.
127. cookiengineer ◴[] No.43971387[source]
To be fair: Linus didn't predict how painful email is in 2025. Self hosting email is a useless attempt if 99% of your emails land in spam anyways, and only spammer emails land in your inbox because they pay for azure or google business accounts.

The general issue that git has is making them interact with each other, I would love for git to get distributed issues, and a nice client UI that is actually graphical and usable by non-terminal users.

There were some attempts to make this distributed and discoverable via similar seed architectures like a DHT. For example, radicle comes to mind.

But staying in sync with hundreds of remotes and hundreds of branches is generally not what git is good at. All UIs aren't made for this.

I'm pointing this out because I am still trying to build a UI for this [1] which turned out to be much more painful than expected initially.

[1] https://github.com/cookiengineer/git-evac

128. NexRebular ◴[] No.43971391{3}[source]
Which I used until they stopped releasing prebuilt packages without subscription.
129. casenmgreen ◴[] No.43971462{4}[source]
https://en.wikipedia.org/wiki/Declination

"In astronomy, declination (abbreviated dec; symbol δ) is one of the two angles that locate a point on the celestial sphere in the equatorial coordinate system, the other being hour angle. The declination angle is measured north (positive) or south (negative) of the celestial equator, along the hour circle passing through the point in question."

Anyone who doesn't know what declination is, know from reading the introductory paragraph of this scientific Wikipedia article?

Anyone? no? :-)

I rest my case, m'lud.

replies(2): >>43971561 #>>43972293 #
130. account-5 ◴[] No.43971495{4}[source]
I can certainly see the appeal of having neat commits but I tend not to worry about them. On a couple of occasions, with my university writing, having a immutable history helped me figure out, for example, how something had ended up in a final draft without citation. I'd deleted the citation which was a quick URL paste in a comment block in an earlier draft, and I'd never saved it to zotero. If I'd been able to tidy up my commits I'd likely have lost it completely.
replies(1): >>43971657 #
131. squigz ◴[] No.43971561{5}[source]
> Anyone who doesn't know what declination is, know from reading the introductory paragraph of this scientific Wikipedia article?

Why should this be a metric one would want Wikipedia to meet? It's an encyclopedia, not an astronomy course.

Of course, the brilliance of Wikipedia is that if you think you can write a clearer intro, you can do so! You could even add it to the simple language version of the page - https://simple.wikipedia.org/wiki/Declination

132. PurpleRamen ◴[] No.43971586[source]
The code is still distributed. Every git clone usually creates a new, self-preserving copy (if we ignore some special flags). The problem is those features, which GitHub is offering outside of code. And I guess the irony is that GitHubs success is probably the reason nobody is adding them to git itself. Like add some subfolders into the repo for issues, wiki, discussions, etc. and have a UI for handling them all, easy. Instead, we have forges&tools supporting separate repos with flavours of widely used formats, making everything more complicated...
133. lupusreal ◴[] No.43971591[source]
I am sure Sourceforge supported subversion by 2007 or 2008, I had a project there then. When was it added?
replies(1): >>43972023 #
134. int_19h ◴[] No.43971657{5}[source]
The appeal depends on how messy your commits are to begin with. When you know that commit history can be rewritten later, it suddenly becomes okay to commit incomplete code that doesn't properly run or even build, effectively using git as an undo system with branching. But the resulting history is completely unsuitable for any future attempt to use `git blame` and such.
135. cmrdporcupine ◴[] No.43971661{5}[source]
Force pushing onto PR branches is the only way to make the commit history in them sane.

But GH's PR process is broken anyways. I miss Gerritt.

136. cmrdporcupine ◴[] No.43971671{5}[source]
There are legit reasons to have a series of commits within one PR, and rebase and merge them as is, and use amend/fixup and force pushes to maintain them cleanly.

It's not my favourite process, but...

137. sublinear ◴[] No.43971681{3}[source]
Why bury this in the documentation if it's the sole feature its users would care about? https://github.com/git-bug/git-bug/blob/master/doc/design/da...

This should be one of the very first links in the readme.

replies(2): >>43980638 #>>43980718 #
138. phire ◴[] No.43972023{3}[source]
It's hard to find dates for that type of thing (especially with sourceforge, their website seems actively mess with the wayback machine). But I dug deeper, apparently Sourceforge got support for SVN in 2006, which is a few months before google code.

2006 appears to be the year that SVN finally became somewhat mainstream, which is interesting because git was released in 2005. Github launched in 2008 and by 2009, everyone seemed to be abandoning SVN.

It feels like SVN was only really "mainstream" for about 3 years, Maybe 5 years at most; There was some early-adopter lead-up and then a long tail of repos refusing to switch to git.

139. executesorder66 ◴[] No.43972293{5}[source]
I've never heard of it before, and it makes perfect sense what it is from that intro.

On a celestial sphere (planet, star, etc) the declination angle (being 0 is at the equator, being 90 degrees is the north pole of the sphere, being -90 degrees, is at the south pole).

You also need another angle known as the "hour angle" to locate a point on the sphere. It doesn't explain what that is, but as can be seen on Wikipedia, you can easily click on that word to go to the entire page that explains what it is.

What don't you understand?

replies(1): >>43979381 #
140. mmis1000 ◴[] No.43972429{4}[source]
On the other hand, the other part of git aren't really strictly work only for git. Create and apply diff also works for plain folder without git history. They are big part of the ecosystem while not bound to git in a strict way either.
141. moralestapia ◴[] No.43972770{3}[source]
I know that, I just didn't get this part "and 20 years later we all use it to store our code in a single place".

And as I can see here, no one else did ...

142. moralestapia ◴[] No.43972777{3}[source]
>for a distribution version control system, it's pretty centralized at GitHub

This is what I don't get ... what is the alternative to GitHub?

143. frizlab ◴[] No.43973099{4}[source]
I don’t get any of that. I tried, but no, it just makes no sense.
replies(1): >>43974827 #
144. BeetleB ◴[] No.43973199[source]
I had been chronically depressed with Mercurial's decline, but now at least jj gives me hope for sanity:

https://github.com/jj-vcs/jj

145. masfoobar ◴[] No.43973261{4}[source]
Last time I checked, he is happy using GPL (even if he did stay over v2)
146. OtomotO ◴[] No.43974224{3}[source]
Yes, I am aware. I didn't claim anything else.

My clients don't use GitHub.

Most of my clients do use Git. (some use other VCS)

What made you think I thought differently?

replies(1): >>43975800 #
147. mhh__ ◴[] No.43974277{5}[source]
No, they're terrible. We should be reviewing stacks of commits not branches
replies(1): >>43977227 #
148. mhh__ ◴[] No.43974284{4}[source]
Phabricator.
149. TuxSH ◴[] No.43974513{4}[source]
> And I am one of the people saddened by the convergence on a single platform.

Hardly surprising, though, social networks are prone to centralization (due to network effect), and GitHub & its competitors (anything that offers git repos + issue tracking + fork-ability, really) are social networks.

Also, GitHub offering private repos for free right after they got acquired by Microsoft helped a lot. A lot of people, myself included, were using gitlab.com for private repos at that time

150. kaichanvong ◴[] No.43974827{5}[source]
;( I feel for you, hopefully–you can get more out from things in the future.
151. voidspark ◴[] No.43975800{4}[source]
Because the comment you replied to never mentioned GitHub. I thought you didn’t know the difference. Linus created Git.
replies(1): >>43976932 #
152. vvillena ◴[] No.43976065{5}[source]
The "squash everything" mantra turns git commit history into a series of snapshots devoid of any logical notion about how code evolves.

Squashed commits are strictly worse than plain, non-fast-forwarded merges from rebased branches.

replies(1): >>43976294 #
153. baq ◴[] No.43976294{6}[source]
Depends on your commits. If it’s untested noise I’d much rather they’re squashed so bisect doesn’t meander in trash.
replies(1): >>43976506 #
154. vvillena ◴[] No.43976506{7}[source]
Bisecting with --first-parent takes care of this.
155. OtomotO ◴[] No.43976932{5}[source]
I see. Just fat fingers
156. IshKebab ◴[] No.43977227{6}[source]
Why? A branch is a stack of commits.
replies(2): >>43977997 #>>43987967 #
157. qwertox ◴[] No.43977904{6}[source]
I was shocked at how fast I was able to find "Open an audio file and read as mono waveform, resampling as necessary" of whisperX in audio.py on grep.app.

It was instantaneous. But where do I go from there? I cannot navigate through the code. It shows me where I can find that string, but that's it. I also cannot look at blame to see when that line got edited.

Though thanks a lot for bringing this onto my radar.

158. Dylan16807 ◴[] No.43977997{7}[source]
The workflow I believe they're talking about is like a branch but you can have multiple versions of the branch as you develop and refine it.

And those updates are properly tracked by your version control, not done jankily by editing a commit and rebasing and force pushing.

159. nsagent ◴[] No.43978342{6}[source]
Interesting. At game companies I worked at we generally used version control solutions that easily allowed storing code and assets together, such as Perforce and Alienbrain.
160. enos_feedler ◴[] No.43978369{5}[source]
Wouldn’t it make economic sense for a git host to emerge that just did things this way and collect big pay for it? Gits been around forever and you’re idea sounds simple enough that a market of people would probably choose it on principle. There must be something more fundamental at play here.
161. eru ◴[] No.43979359{5}[source]
Yes, branches are just mutable pointers. The commit history is an immutable tree and has a garbage collector to clean up.

Funny enough, this is more or less exactly the architecture some of those Haskell-weirdos would come up with. It's essentially a copy-on-write filesystem.

(Haskell people are weirdos compared to good old fashioned operating system people who use C as God intended.)

162. eru ◴[] No.43979381{6}[source]
Well, you misunderstood / mis-guessed what celestial sphere means. Interestingly enough, your mis-understanding also sort-of works.
replies(1): >>43982726 #
163. nextaccountic ◴[] No.43980206{4}[source]
This mirror is just code, but Firefox has issues. They are just stored elsewhere (bugzilla)
164. rablackburn ◴[] No.43980638{4}[source]
>> ...if it's the sole feature its users would care about?

The tag-line covers it pretty well I thought?

"git-bug is a standalone, distributed, offline-first issue management tool that embeds issues, comments, and more as objects in a git repository (not files!), enabling you to push and pull them to one or more remotes."

That tells you what the feature is - if you need/want a more technical overview you can still get from the `README` to `entity data model` in two clicks (Documentation > Data model).

165. sudoforge ◴[] No.43980718{4}[source]
hey there! i maintain git-bug, and recently trimmed down the README, which was, in my opinion, a bit too dense prior to this recent change (https://github.com/git-bug/git-bug/commit/96c7a111a3cb075b5c...).

i rewrote the README with the goal of providing a clear overview of git-bug's features, and why you might want to use it, and ensuring that for those who are more technically inclined, things like the data model, internal architecture, and more were easy to find under the documentation folder (whether you're browsing through the files directly, or landing on //doc:README.md, which links to the files and folders under //doc.

if you think that there is information missing from the README, or hard to find in the repository (either by browsing through it, or clicking the rather prominent links from the main README), i'd welcome any suggestions in the form of a PR.

166. vintermann ◴[] No.43981301{4}[source]
That's what he says, and it's a sensible thing to say to not keep focus on old grudges, but people were really exasperated with Larry McVoy back in the day so I'm not sure it's entirely historically honest!
167. executesorder66 ◴[] No.43982726{7}[source]
Well that was a whole other topic. And luckily it links to a page that explains the whole topic of what a "celestial sphere" is. Going to the page, I see I was indeed wrong about what it was, but now I see it is an abstract sphere, with a radius that can be whatever size you want, and that is centered on the Earth, or on the observer.

Once again, not so difficult to figure out even if you have no experience in the specific technical field of a Wikipedia article. So I have no idea what /u/casenmgreen's problem is.

replies(1): >>43990949 #
168. mhh__ ◴[] No.43987967{7}[source]
Then whence merge commits?

A branch is a commit with a hat on, strictly speaking.

replies(1): >>43990972 #
169. spookie ◴[] No.43988211{4}[source]
Not a single soul besides the one rewriting history knows what they're in for after the fact.

It's a recipe for disaster.

Unless you mean squashing commits, which I don't consider rewriting history, just a retelling of the fact. Still, it's something one can only do very sporadically, or at known periods of time. I

'm sure others would be more pedantic about it and this wasn't clear above.

170. przemo_li ◴[] No.43988717[source]
That's wrong hot take.

GH have forks. Those are distributed repos. You can also sync to GitLab and similar, you can front it with the likes of Gerrit, integrate some code review UIs that actually clone code, etc.

You can exercise distributed nature of git with GitHub quite well.

171. eru ◴[] No.43990949{8}[source]
I think I see casenmgreen's is trying to get at. But they just picked an example that (to you and me) just isn't all that complicated nor bad.
172. eru ◴[] No.43990972{8}[source]
Yes, a branch together with information about the intended point of divergence is a stack of commits. (Most of the time, the point of divergence is arrived at implicitly by specifying the intended mother branch, and git figures out the last common ancestor, ie the merge-base.) Let's call the branch-plus-point-of-divergence a 'PR branch'.

Though your 'stack of commits' is more like a 'stack of diffs' (at least in the Git sense of commit-is-a-snapshot-of-the-whole-repo.)

And actually, for better or worse, a PR branch is more expressive than a 'stack of commits', exactly for the reason you suggest: a PR branch can also contain merge commits, it doesn't have to be a linear chain.

replies(1): >>43991327 #
173. mhh__ ◴[] No.43991327{9}[source]
They are often called stacked diffs yes.
replies(1): >>43991813 #
174. eru ◴[] No.43991813{10}[source]
Basically in terms of git speak branches are mutable pointers to immutable commits. (They are basically the only mutable thing in git.)

What you'd need to do to support 'stacked diffs' or 'stacks of commits' is to keep a history of what you mutable pointers were doing. It's a 'meta-git'.

Once you have that, you could build all the convenient operations on top of that abstraction.

Btw, if memory serves right, git has some plugins (or whatever these things are called, plugins or so?) for implementing the stack of commits concept.

I don't know whether they go the 'meta-git' route that I sketched, or whether they do something less abstract.