Does anyone else miss the days when all commits were rebased? I find that the super-non-linear history makes it much more difficult to figure out what has changed between two points, or to pinpoint the cause of a regression.
It’s too bad github’s otherwise awesome pull request functionality doesn’t provide the option of rebasing rather than merging.
In this case those branches are public, so it is a Bad Thing to rebase them on master prior to the merge because all the sha1s change. You should only rebase private branches, merge to local master (after a pull --rebase) then push to upstream master. (to get linear history).
There are two parties to a patch or a pull request: in git parlance, the author and the committer. You are talking about the author side of the process, which is often debated, but not what I meant to discuss right now. I’m talking about what the Rails core committers do with submitted patches and pull requests. Prior to the existence of the “Merge” button on github, Rails committers would routinely rebase submitted patches onto master. This leads to a nice, clean, linear history.
The “Merge” button, on the other hand, does not do rebase. In fact, it forces a merge commit even if the merge otherwise would have been a fast-forward. This leads to an extremely cluttered history:
I’m proposing we should keep doing things the previous way (i.e., not using the “Merge” button) until github offers an option to rebase when accepting a pull request.
To tell you the truth, I hate the fact that Github always create a commit that says “merging” stuff. What I’d rather would like to have is that Github would try to fast-forward merge first, then fallback to three-way-merge if it’s failed.