+1 On Thu, Dec 19, 2019, 4:05 PM Owen Nichols <onich...@pivotal.io> wrote:
> I’d like to advance this topic from an informal request/discussion to a > discussion of a concrete proposal. > > To recap, it sounds like there is general agreement that commit history on > develop should be linear (no merge commits), and that the biggest obstacle > to this is that the PR merge button in GitHub creates a merge commit by > default. > > I propose the following changes: > 1) Change GitHub settings to remove the ability to create a merge commit. > This will make Squash & Merge the default. > > 2) Change GitHub settings to require linear history on develop. This > prevents merge commits via command-line (not recommended, but wiki still > has instructions for merging PRs this way). > > 3) Update the PR template to change the text "Is your initial contribution > a single, squashed commit” to “Is your initial contribution squashed for > ease of review (e.g. a single commit, or a ‘refactoring’ commit plus a > ‘fix’ commit)" > > For clarity, I am proposing no-change in the following areas: > i) Leave Rebase & Merge as an option for PRs that have been structured to > benefit from it (this can make it easier in a bisect to see whether the > refactoring or the “fix” broke something). > ii) Leave existing wording in the wiki as-is [stating that squashing is > preferred]. > > > Please comment via this email thread. > -Owen > > > > > On Dec 16, 2019, at 10:49 AM, Kirk Lund <kl...@apache.org> wrote: > > > > I think it's already resolved Udo ;) > > > > Here's the problem, if I fixup a dunit test by removing all uses of > "this." > > and I rename the dunit test, then git doesn't remember that the file is a > > rename -- it forever afterwards interprets it as a new file that I > created > > if I touch more than 50% of the lines (which "this." can easily do). If > we > > squash two commits: the rename and the cleanup of that dunit test -- then > > we effectively lose the history of that file and it shows that I created > a > > new file. > > > > Also for the record, I've been working on Geode since the beginning and I > > was never made aware of this change in our process. I never voted on it. > > I'm not a big fan of changing various details in our process every single > > week. It's very easy to miss these discussions unless someone points it > out > > to me. > > > > On Mon, Dec 16, 2019 at 10:34 AM Udo Kohlmeyer <ukohlme...@pivotal.io> > > wrote: > > > >> I'm not sure what this discussion is about... WE, as a community, have > >> agreed in common practices, in two place no less... > >> > >> 1) Quoting our PR template > >> > >> > >> For all changes: > >> > >> * > >> > >> Is there a JIRA ticket associated with this PR? Is it referenced in > >> the commit message? > >> > >> * > >> > >> Has your PR been rebased against the latest commit within the target > >> branch (typically|develop|)? > >> > >> * > >> > >> ***Is your initial contribution a single, squashed commit?* > >> > >> * > >> > >> Does|gradlew build|run cleanly? > >> > >> * > >> > >> Have you written or updated unit tests to verify your changes? > >> > >> * > >> > >> If adding new dependencies to the code, are these dependencies > >> licensed in a way that is compatible for inclusion underASF 2.0 > >> <http://www.apache.org/legal/resolved.html#category-a>? > >> > >> On our PR template we call out that the initial PR commit should be > >> squashed. > >> > >> 2)https://cwiki.apache.org/confluence/display/GEODE/Code+contributions > >> <https://cwiki.apache.org/confluence/display/GEODE/Code+contributions> > >> -- See "Accepting a PR Using the Command Line" - Point #3. > >> > >> > >> @Kirk, if each of your commits "stands alone", I commend you on the > >> diligence, but in reality, they should either then be stand alone PR's > >> or just extra work created for yourself. > >> > >> If we want to change the way we have agreed upon we submit/commit/merge > >> changes back into develop... Then this is another discussion thread, > >> until then, I think we should all remind ourselves on our agreed > >> contributions code of conduct. > >> > >> --Udo > >> > >> On 12/16/19 9:59 AM, Nabarun Nag wrote: > >>> Kirk, I believe that creating a Pull Request with multiple commits is > ok. > >>> It's just in the end that when it's being pushed to develop branch, it > >>> needs to be squash merged. I believe that is what you have mentioned in > >> the > >>> first paragraph, and I am more than happy with that. > >>> If you can see in the first screenshot comparison that I had attached > in > >>> the first email in this thread is what I want to avoid. > >>> > >>> Thank you for your feedback. > >>> > >>> Regards > >>> Naba > >>> > >>> > >>> On Mon, Dec 16, 2019 at 9:47 AM Kirk Lund <kl...@apache.org> wrote: > >>> > >>>> Whenever I submit a PR with multiple commits that I intend to rebase > to > >>>> develop, I always try to ensure that each commit stands alone as is > >>>> (compiles and passes tests). Separating file renames and refactoring > >> from > >>>> behavior changes into different commits seems very valuable to me, and > >> I've > >>>> had trouble getting people to review PRs without this separation (but > it > >>>> could be squashed as it's merged to develop). > >>>> > >>>> It sounds to me like the real problem is (a) some PRs have multiple > >> commits > >>>> that don't compile or don't pass tests, and (b) some PRs that should > be > >>>> merged with squash are not (by accident most likely). > >>>> > >>>> I can submit multiple PRs instead of one PR with multiple commits. So > >> I'll > >>>> change my response to -0 if that helps prevent commits to develop that > >>>> don't compile or pass tests. Without preventing rebase or merge > commits > >>>> from github, I'm not sure how we can really enforce this or prevent > (b) > >>>> above. > >>>> > >>>> On Fri, Dec 13, 2019 at 3:38 PM Alexander Murmann < > amurm...@pivotal.io> > >>>> wrote: > >>>> > >>>>> I wonder if Kirk's and Naba's statements are necessarily at odds. > >>>>> > >>>>> Make the change easy (warning: this may be hard), then make the easy > >>>>>> change." > >>>>> -Kent Beck > >>>>> > >>>>> Following Kent Beck's advise might reasonably split into two commits. > >> One > >>>>> refactor commit and a separate commit that introduces the actual > >> change. > >>>>> They should be individually revertible and might be easier understood > >> if > >>>>> split out. I vividly remember a change on our code base where someone > >>>> did a > >>>>> huge amount of refactoring that resulted than in one parameter > changing > >>>> in > >>>>> order to get the desired functionality change. If that was in one > >> commit, > >>>>> it would be hard to see the actual change. If split out, it's > beautiful > >>>> and > >>>>> crystal clear. > >>>>> > >>>>> I am unsure how that would be reflected in terms of JIRA ticket > >>>> references. > >>>>> Usually we assume that if there is a commit with the ticket number, > the > >>>>> issue is resolved. Maybe the key here is to create a separate > >> refactoring > >>>>> ticket. > >>>>> > >>>>> Would that allow us to have our cake and eat it too? > >>>>> > >>>>> On Fri, Dec 13, 2019 at 3:16 PM Nabarun Nag <n...@pivotal.io> wrote: > >>>>> > >>>>>> It is to help with bisect operations when things start failing ... > >>>> helps > >>>>> us > >>>>>> it revert and build faster. > >>>>>> also with cherry picking features / fixes to previous versions . > >>>>>> And keeping the git history clean with no unnecessary “merge > commits”. > >>>>>> > >>>>>> Regards > >>>>>> Naba > >>>>>> > >>>>>> > >>>>>> On Fri, Dec 13, 2019 at 2:25 PM Kirk Lund <kl...@apache.org> wrote: > >>>>>> > >>>>>>> -1 I really like to sometimes have more than 1 commit in a PR and > >>>> keep > >>>>>> them > >>>>>>> separate when they merge to develop > >>>>>>> > >>>>>>> On Tue, Oct 22, 2019 at 5:12 PM Nabarun Nag <n...@pivotal.io> > wrote: > >>>>>>> > >>>>>>>> Hi Geode Committers, > >>>>>>>> > >>>>>>>> A kind request for using squash commit instead of using merge. > >>>>>>>> This will really help us in our bisect operations when a > >>>>>>>> regression/flakiness in the product is introduced. We can automate > >>>>> and > >>>>>> go > >>>>>>>> through fewer commits faster, avoiding commits like "spotless fix" > >>>>> and > >>>>>>>> "re-trigger precheck-in" or other minor commits in the merged > >>>> branch. > >>>>>>>> Also, please use the commit format : (helps us to know who worked > >>>> on > >>>>>> it, > >>>>>>>> what is the history) > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> * GEODE-xxxx: <brief intro > > >>>>>>>> * explanation line 1 * explanation > >>>>> line > >>>>>> 2* > >>>>>>>> This is not a rule or anything, but a request to help out your > >>>> fellow > >>>>>>>> committers in quickly detecting a problem. > >>>>>>>> > >>>>>>>> For inspiration, we can look into Apache Kafka / Spark where they > >>>>> have > >>>>>> a > >>>>>>>> complete linear graph for their main branch HEAD [see attachment] > >>>>>>>> > >>>>>>>> Regards > >>>>>>>> Naba. > >>>>>>>> > >>>>>>>> > >>>>>>>> > >> > >