Ok, I'll need to stop using Gmail. In the meantime, sorry for the
inconvenience, retrying, hoping that Gmail won't randomly screw
up the formatting this time.

So, I do don't like history that look like the following:

> commit eeee: last nits from reviewer
> commit dddd: oops, typo that prevented compilation
> commit cccc: some more fix found during review
> commit bbbb: refactor half of preceding patch following reviewer comments
> commit aaaa: Do something awesome - patch for #666

To be sure we talk of the same thing, let it be clear that I'm talking about
multiple commits due to the review process, i.e. changeset that is separated
into multiple commits only because that is the history of the mistakes made
by the author and remarked by the reviewer (or even that the author see
after having made it's branch public).

Now I could sum the reason why I think this is a regression compared to the
rather clean history we've had so can be summed up by two things:

1) I cannot see any case where having those details once the ticket is
committed to the project (i.e, has been +1'ed) would be useful, and I
certainly never ever wanted to know those when looking at our history.

2) I do think that keeping those details would be counter-productive:
  - It makes reading the history harder by the sheer fact of the added
    volume of commits. And since those commits are noise once the feature is
    committed (again, when knowing that the initial author had forgot to
    check the tests were not compiling and had to commit another one liner,
    or had tried another approach that has been heavily refactored in the
    next patch because the first attempt was ugly has ever be useful?).
  - It potentially makes bisect harder. Again, I'm talking about commits
    coming from the review process. Those, more or less by definition, come
    to fix mistakes made initially. They will more often than not not be
    compiling, or maybe just have the tests that do not compile, or
    introduce bugs that are fixed in the very next commit. When you bisect,
    those kind of commit are a pain in the ass.
  - It makes it more annoying to find what commits refer to what ticket. Not
    impossible, just a little harder.

Let it be clear that I'm not saying keeping the 'review commits' make
anything *impossible*, but it does make very common tasks more complicated
(and potentially very frustrating in the case of bisect), while adding only
noise.

Of course, we could debate whether those 'review commits' are noise or not,
i.e. if they can have a concrete use ever, but my personal experience on
that is that it is noise.

> The other side of the equation is that there is tremendous power to be had
> from distributed versioning, and this proposed workflow discourages taking
> advantage of that

Would you mind elaborating, maybe be a little more concrete on that one.
Because just to be such we agree, I did not propose to rebase public
branches or something like that.

I proposed basically that once a changeset has been finalized on a branch
xxx of the author repro, instead of merging the branch xxx, the committer
would (locally) extract the content of that changeset and commit is a one
commit to the project repository (say trunk). Given that git is content
based, it "should" work without much problem for other branch based on xxx
to merge trunk in their branch.

Sure that may not be "beautiful" or something, and I you have better to
propose, be my guest.

Last thing, I did check the kernel source git history (which as far as I
know is considered as a model of git usage and distribution), and there is
not a single commit that looks like some nits issue from the review of a
preceding commit.

On Mon, Jan 9, 2012 at 4:38 PM, Sylvain Lebresne <sylv...@datastax.com> wrote:
> So, I do don't like history that look like the following:
>> commit eeee: last nits from reviewer> commit dddd: oops, typo that prevented 
>> compilation> commit cccc: some more fix found during review> commit bbbb: 
>> refactor half of preceding patch following reviewer comments> commit aaaa: 
>> Do something awesome - patch for #666
> To be sure we talk of the same thing, let it be clear that I'm talking
> aboutmultiple commits due to the review process, i.e. changeset that
> is separatedinto multiple commits only because that is the history of
> the mistakes madeby the author and remarked by the reviewer (or even
> that the author seeafter having made it's branch public).
> Now I could sum the reason why I think this is a regression compared
> to therather clean history we've had so can be summed up by two
> things:
> 1) I cannot see any case where having those details once the ticket
> iscommitted to the project (i.e, has been +1'ed) would be useful, and
> Icertainly never ever wanted to know those when looking at our
> history.
> 2) I do think that keeping those details would be counter-productive:
> - It makes reading the history harder by the sheer fact of the added
>  volume of commits. And since those commits are noise once the feature
> is    committed (again, when knowing that the initial author had
> forgot to    check the tests were not compiling and had to commit
> another one liner,    or had tried another approach that has been
> heavily refactored in the    next patch because the first attempt was
> ugly has ever be useful?).  - It potentially makes bisect harder.
> Again, I'm talking about commits    coming from the review process.
> Those, more or less by definition, come    to fix mistakes made
> initially. They will more often than not not be    compiling, or maybe
> just have the tests that do not compile, or    introduce bugs that are
> fixed in the very next commit. When you bisect,    those kind of
> commit are a pain in the ass.  - It makes it more annoying to find
> what commits refer to what ticket. Not    impossible, just a little
> harder.
> Let it be clear that I'm not saying keeping the 'review commits'
> makeanything *impossible*, but it does make very common tasks more
> complicated(and potentially very frustrating in the case of bisect),
> while adding onlynoise.
>> The other side of the equation is that there is tremendous power to be had> 
>> from distributed versioning, and this proposed workflow discourages taking> 
>> advantage of that
> Would you mind elaborating, maybe be a little more concrete on that
> one.Because just to be such we agree, I did not propose to rebase
> publicbranches or something like that.
> I proposed basically that once a changeset has been finalized on a
> branchxxx of the author repo, instead of merging the branch xxx, the
> committerwould (locally) extract the content of that changeset and
> commit is a onecommit to the project repository (say trunk). Given
> that git is contentbased, it "should" work without much problem for
> other branch based on xxxto merge trunk in their branch.
> Sure that may not be "beautiful" or something, and I you have better
> topropose, be my guest.
> Last thing, I did check the kernel source git history (which as far as
> Iknow is considered as a model of git usage and distribution), and
> there isnot a single commit that looks like some nits issue from the
> review of apreceding commit.
> --Sylvain

Reply via email to