this post was submitted on 08 Mar 2024
46 points (97.9% liked)
Programming
17333 readers
318 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities [email protected]
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
It's surprising how Github is sorely lacking in git features and even encourages bad practices.
There is only a linear history view of commits without any child/parent relationships visualized. I have coworkers that tell me it's annoying how I use merge commits because they just see a big list of small commits in the history, and they'd rather see one commit per PR. Well... I sympathize, but also, fuck that! I'm not squashing my carefully crafted commits because Github has a shitty UI. Use
git log --first-parent
or something likelazygit
. It's sad that many open source projects have adopted a "squash and merge" mantra for PRs. All of the merge methods have a valid use case, but people are so beholden to the damned Github history view.PRs have no concept of what a patch is. If you rebase, the entire history disappears. Reviewers cannot see changes made to individual patches unless they are applied first in new commits and then manually squashed into old patches after the review is done. Phabricator does this better IMO; each patch has its own history. I've even heard devs at other companies tell me they never make PRs bigger than 100 LOC. That just seems like a huge waste of time to me, unless you have some special tools to support that bizarre workflow.
Merge queues only support a single merge method, one of merge commit, rebase, or squash. So we just don't use this desirable feature because of this limitation.
Ooh yeah PR as patches, persistent despite rebases, would be nice.
Many git operations fundamentally have three SHAs as parameters (tree operations after all), and GitHub's model simplifies it down to two.