PR isnโt really the right format for early rough ideas or experiments or โthinking out loudโ, they are more a delivery mechanism. So having a review tool that is distinct from โpush to mainโ that allows a more collaborative process would be better imo.
I really like Gerrit because it makes everyone feel as if they have commit access, even if they don't, because everyone just does `git push origin HEAD:refs/for/master` from their feature branch and has a branch in the main repository and a nice way to review / approve it.
You have people with approval access, and your choice of system for it, which could just be 1 approval including by the person who submitted it. Then, ideally, you have a nice CI bot that quickly tests + merges it within a couple minutes. Encourages linear history + always green.
1
This Tweet was deleted by the Tweet author. Learn more
Someone without commit access can't push to the main repository on GitHub. They have to make a remote fork of every project where they contribute. Even with commit access, you manage remote branches yourself.
It also can't properly handle rebasing proposed changes even in 2021.
CI really doesn't work well there. The review interface is also really bad aside from getting completely screwed up by rebasing. They really should have adopted Change-Id and not been against the culture of requiring a sensible set of commits split up logically before applying.
For a long time, they actually actively sabotaged the review interface if you used that approach instead of keeping the whole history of the feature branch.
They took an opinionated approach which was against how Git was actually designed / intended to be used by the developers.
This is my GitHub profile:
https://github.com/thestinger
I clear away those nonsense remote forks and primarily have all my own stuff in organizations, including archive organizations, which are largely not marked as public on my profile. I think it's apparent I use it a ton though.
So, for example, I'm about to delete https://github.com/thestinger/certbot-ocsp-fetcherโฆ since I just noticed I forgot to get rid of that after submitting a PR to that project a couple days ago. I have no idea why GitHub makes you create / manage these. It's such a pain. Why do I need origin AND upstream?