@onichols Correction: The 'git-flow' workflow that Geode follows is to merge a release commit to master and to develop.
On Thu, Dec 19, 2019 at 4:51 PM Owen Nichols <onich...@pivotal.io> wrote: > Dan, to address some of your concerns: > > This proposal is to block merge commit on develop only. The release > process makes a merge commit to master only. > > This proposal explicitly allows reasonably separate and well written > commits in a single PR. For this case simply choose Rebase & Merge, and > all of the commits in the PR will be brought to develop individually (no > merge commit wrapping them). > > If you still feel strongly that merge commits should be allowed on > develop, would you consider approving 1) to prevent accidental GitHub > accidents, but veto only 2) to allow merge commits to be explicitly created > manually when explicitly desired? > > > On Dec 19, 2019, at 4:43 PM, Dan Smith <dsm...@pivotal.io> wrote: > > > > -1 to (1) and (2). > > > > I think merge commits are appropriate in certain circumstances, so I > don't > > think we should make a blanket restriction. In fact I think our release > > process involves some merges. > > > > I think setting standards on what is reasonable to be an individual > commit > > will do a lot more to clean up our history than blocking merges. We'd > > rather not see commits like "Spotless Apply" in the history, but if > > reasonably separate and well written commits come in as part of a merge, > I > > think that's fine. > > > > -Dan > > > > On Thu, Dec 19, 2019 at 4:27 PM Jinmei Liao <jil...@pivotal.io> wrote: > > > >> +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. > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>> > >>> > >>> > >> > >