Github user miguelaferreira commented on the pull request: https://github.com/apache/cloudstack/pull/527#issuecomment-117186219 As long as people make good commits, that are atomic, capture relevant changes together, and have descriptive messages, IMHO squashing only make things worse. If you squash commits, all you get is less commits. Some people might say a cleaner master branch. I won't discuss aesthetics here. I will try to be objective. With less commits you also get larger commits. That means that in a change set (e.g. a PR) where a large number of changes are made, these changes are all bundled together. That forces the reviewer to take all the context at once. With more commits you get smaller commits. That allows the reviewer to take chunks of context at a time. And, in addition, if the reviewer wants/needs to get all the context at once, it is easy to make a diff between the first and the last commit in the change set (Github offers both per commit view and total diff view, just see the tabs on top of this PR). If you will, this is comparable to reviewing a class will several small methods or reviewing a class with one big method. Another interesting aspect that should be considered is reverting commits. As you may all know this can happen quite frequently. With smaller, atomic commits, it is easer to revert a change (e.g a bug introducing change) in a particular part of the code (while leaving the rest of the code untouched). It is easier because (1) the small commit isolates the change; (2) in the presence of conflicts these can be fixed iteratively, in small steps. Finally, I would like to point out that smaller commits allow the developer to convey more information about each change. If you squash a set of commits you loose the description of all the small changes. Do we really want to go towards less information about code changes? Or do we want to have the developers write a bullet list of the changes they made and assign them to parts of the code? There simply isn't any other way to preserve this information. Of course that, as I already said, all this only makes sense if: * commits are small; * atomic; * have good descriptions. And that is, simply put, entry-level development discipline.
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---