I would love to be given small, isolated, well planned work to do, the specification of which never changes. That isn't the world I live in, which is why I would like our ideals to be good and to have guidelines to support them, but not to have unbreakable rules that may trip us up. I am only advocating flexibility when it is justified.
On 16 June 2016 at 09:26, Rick Harding <rick.hard...@canonical.com> wrote: > I'm going to push back on the why squash or even the "let's make it just > auto clean it up". > > A commit to the tree should be a single, well thought out, chunk of work > that another can review and process easily. Having the history of how you > got there isn't valuable in my opinion. The most important thing is to have > something I can look at in a diff, code review, etc and make sense of it. If > I need to go through the 10 commits that built it up to make sense of it, > then the commit is too big or fails in some other way. > > Doing this helps with the ideas we're all talking about. Making things > easier to review, easier to land against master, easier to review and debug. > This comes down to things I've discussed about breaking kanban cards down > into a single pull request worth of work, and breaking it down smaller and > smaller until you get there. The ideas need to get cut down and be something > that someone else can look at and understand. Doing it any other way I think > just continues with many of the issues we're fighting today. > > On Thu, Jun 16, 2016 at 12:16 PM James Tunnicliffe > <james.tunnicli...@canonical.com> wrote: >> >> TLDR: Having guidelines rather than rules is good. Having a tool >> mindlessly squashing commits can throw away valuable information. >> >> I am a little confused as to why we need to squash stuff at all. Git >> history isn't flat so if you don't want to see every commit in a >> branch that has landed then you don't have to. I realise that I am a >> scummy GUI user and I haven't looked at how to use the git CLI to do >> this. I am not against squashing commits to provide a nice logical >> history without the 'fix the fact that I am dumb and missed that >> rename' noise, but I don't think squashing to a single commit is >> always the right thing to do. >> >> Once code is up for review I want the history to remain from the start >> to the end of the review loop so if I ask someone to change something >> I can actually see that change. I have no problem with those commits >> being squashed pre-merge if they are minor changes to the originally >> proposed code. >> >> James >> >> On 16 June 2016 at 08:25, Marco Ceppi <marco.ce...@canonical.com> wrote: >> > This is purely anecdotal, but on the ecosystem side for a lot of our >> > projects I've tried to psuedo-enforce the "one commit", or really, a >> > change/fix/feature per commit. Thereby allowing me to cherrypick for >> > patch >> > releases to stable (or revert a commit) with confidence and without a >> > lot of >> > hunting for the right grouping. >> > >> > With the advent of squashing in github I've dropped this push and use >> > this >> > unless the author has already done the logical grouping of commits, in >> > which >> > case I'll merge them myself, out of github, to avoid merge messages but >> > retain their grouping (and potentially modify commit messages, to make >> > it >> > easier to identify the PR number and the bug number it fixes). >> > >> > I don't think the Juju core project can just carte blanche squash every >> > pull >> > request, but I do think it's up to the code authors to put an effort in >> > to >> > squashing/rewriting/managing their commits prior to submittion to make >> > the >> > code's history more observable and manageable overtime. Much in the same >> > way >> > you would document or comment blocks of code, commits are a window into >> > what >> > this patch does, if you want to keep your history, for reference, >> > branching >> > is cheap in git and you absolutely can. >> > >> > Happy to share more of the latter mentioned workflow for those >> > interested, >> > but otherwise just some 2ยข >> > >> > Marco >> > >> > On Thu, Jun 16, 2016 at 10:12 AM John Meinel <j...@arbash-meinel.com> >> > wrote: >> >> >> >> Note that if github is squashing the commits when it lands into Master, >> >> I >> >> believe that this breaks the ancestry with your local branch. So it >> >> isn't a >> >> matter of "the history just isn't present in the master branch", but >> >> "it >> >> looks like a completely independent commit revision, and you have no >> >> obvious >> >> way to associate it with the branch that you have at all". >> >> >> >> It may be that git adds information to the commit ('this commit is a >> >> rollup of hash deadbeef") in which case the git tool could look it up. >> >> >> >> I don't know the github UI around this. If I do "git merge --squash" >> >> then >> >> it leaves me with an uncommitted tree with the file contents updated, >> >> and >> >> then I can do "git commit -m new-content" >> >> >> >> And then if I try to do: >> >> $ git branch -d test-branch >> >> error: The branch 'test-branch' is not fully merged. >> >> If you are sure you want to delete it, run 'git branch -D test-branch' >> >> >> >> Which indicates to me that it intentionally forgets everything about >> >> all >> >> of your commits, which mean you need to know when it got merged so that >> >> you >> >> can prune your branches, because the tool isn't going to track what has >> >> and >> >> hasn't been merged. >> >> >> >> (I don't know about other people, but because of the delays of waiting >> >> for >> >> reviews and merge bot bouncing things, it can take a while for >> >> something to >> >> actually land. I often have branches that sit for a while, and it is >> >> easy >> >> for me to not be 100% sure if that quick bugfix I did last week >> >> actually >> >> made it through to master, and having 'git branch -d ' as a short hand >> >> was >> >> quite useful.) >> >> >> >> Note that if we are going to go with "only 1 commit for each thing >> >> landed", then I do think that using github's squash feature is probably >> >> better than rebasing your branches. Because if we just rebase your >> >> branch, >> >> then you end up with 2 revisions that represent your commit (the one >> >> you >> >> proposed, and the merge revision), vs just having the "revision of >> >> master >> >> that represents your changes rebased onto master". We could 'fast >> >> forward >> >> when possible' but that just means there is a window where sometimes >> >> you >> >> rebased your branch and it landed fast enough to be only 1 commit, vs >> >> someone else landed a change just before you and now you have a merge >> >> commit. I would like us to be consistent. >> >> >> >> For people who do want to throw away history with a rebase, what's your >> >> feeling on whether there should be a merge commit (the change as I >> >> proposed >> >> it) separate from the change-as-it-landed-on-master. I mean, if you're >> >> getting rid of the history, the the change-as-I-proposed-it (and >> >> personally >> >> tested it) doesn't really matter, right? And the bot tests the >> >> change-as-it-landed. >> >> >> >> John >> >> =:-> >> >> >> >> >> >> On Thu, Jun 16, 2016 at 4:20 PM, Ian Booth <ian.bo...@canonical.com> >> >> wrote: >> >>> >> >>> >> >>> >> >>> On 16/06/16 19:04, David Cheney wrote: >> >>> > Counter suggestion: the bot refuses to accept PR's that contain more >> >>> > than one commit, then it's up to the submitter to prepare it in any >> >>> > way that they feel appropriate. >> >>> > >> >>> >> >>> Please no. I do not want to be forced to alter my local history. >> >>> >> >>> I was hopeful that having the landing bot / github squash commits >> >>> would >> >>> satisfy >> >>> those people what did not want to use git log --first-parent to >> >>> present a >> >>> sanitised view of commits, but allow me to retain the history in my >> >>> branches >> >>> locally so I could look back on what I did and when and how (if >> >>> needed). >> >>> >> >>> If the default github behaviour is not sufficient, perhaps we can add >> >>> some >> >>> tooling in the merge bot to do the squashing prior to merging. >> >>> >> >>> >> >>> > On Thu, Jun 16, 2016 at 6:44 PM, roger peppe >> >>> > <roger.pe...@canonical.com> wrote: >> >>> >> Squashed commits are nice, but there's something worth watching >> >>> >> out for: currently the merge commit is committed with the text >> >>> >> that's in the github PR, but when a squashed commit is made, this >> >>> >> text is ignored and only the text in the actual proposed commit >> >>> >> ends >> >>> >> up >> >>> >> in the history. This surprised me (I often edit the PR description >> >>> >> as the review continues) so worth being aware of, I think. >> >>> >> >> >>> >> cheers, >> >>> >> rog. >> >>> >> >> >>> >> On 16 June 2016 at 02:12, Menno Smits <menno.sm...@canonical.com> >> >>> >> wrote: >> >>> >>> Hi everyone, >> >>> >>> >> >>> >>> Following on from the recent thread about commit squashing and >> >>> >>> commit >> >>> >>> message quality, the idea of automatically squashing commit at >> >>> >>> merge >> >>> >>> time >> >>> >>> has been raised. The idea is that the merge bot would >> >>> >>> automatically >> >>> >>> squash >> >>> >>> commits for a pull request into a single commit, using the PR >> >>> >>> description as >> >>> >>> the commit message. >> >>> >>> >> >>> >>> With this in place, developers can commit locally using any >> >>> >>> approach >> >>> >>> they >> >>> >>> prefer. The smaller commits they make as they work won't be part >> >>> >>> of >> >>> >>> the >> >>> >>> history the team interacts with in master. >> >>> >>> >> >>> >>> When using autosquashing the quality of pull request descriptions >> >>> >>> should get >> >>> >>> even more scrutiny during reviews. The quality of PR descriptions >> >>> >>> is >> >>> >>> already >> >>> >>> important as they are used for merge commits but with >> >>> >>> autosquashing >> >>> >>> in place >> >>> >>> they will be the *only* commit message. >> >>> >>> >> >>> >>> Autosquashing can be achieved technically by either having the >> >>> >>> merge >> >>> >>> bot do >> >>> >>> the squashing itself, or by taking advantage of Github's feature >> >>> >>> to >> >>> >>> do this >> >>> >>> (currently in preview mode): >> >>> >>> >> >>> >>> >> >>> >>> https://developer.github.com/changes/2016-04-01-squash-api-preview/ >> >>> >>> >> >>> >>> We need to ensure that the squashed commits are attributed to the >> >>> >>> correct >> >>> >>> author (i.e. not jujubot). I'm not sure what we do with pull >> >>> >>> requests >> >>> >>> which >> >>> >>> contain work from multiple authors. There doesn't seem to be an >> >>> >>> established >> >>> >>> approach for this. >> >>> >>> >> >>> >>> Thoughts? >> >>> >>> >> >>> >>> - Menno >> >>> >>> >> >>> >>> >> >>> >>> >> >>> >>> >> >>> >>> -- >> >>> >>> Juju-dev mailing list >> >>> >>> Juju-dev@lists.ubuntu.com >> >>> >>> Modify settings or unsubscribe at: >> >>> >>> https://lists.ubuntu.com/mailman/listinfo/juju-dev >> >>> >>> >> >>> >> >> >>> >> -- >> >>> >> Juju-dev mailing list >> >>> >> Juju-dev@lists.ubuntu.com >> >>> >> Modify settings or unsubscribe at: >> >>> >> https://lists.ubuntu.com/mailman/listinfo/juju-dev >> >>> > >> >>> >> >>> -- >> >>> Juju-dev mailing list >> >>> Juju-dev@lists.ubuntu.com >> >>> Modify settings or unsubscribe at: >> >>> https://lists.ubuntu.com/mailman/listinfo/juju-dev >> >> >> >> >> >> -- >> >> Juju-dev mailing list >> >> Juju-dev@lists.ubuntu.com >> >> Modify settings or unsubscribe at: >> >> https://lists.ubuntu.com/mailman/listinfo/juju-dev >> > >> > >> > -- >> > Juju-dev mailing list >> > Juju-dev@lists.ubuntu.com >> > Modify settings or unsubscribe at: >> > https://lists.ubuntu.com/mailman/listinfo/juju-dev >> > >> >> -- >> Juju-dev mailing list >> Juju-dev@lists.ubuntu.com >> Modify settings or unsubscribe at: >> https://lists.ubuntu.com/mailman/listinfo/juju-dev -- Juju-dev mailing list Juju-dev@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/juju-dev