Hi,

If it were automated I would have no problem with it. That would be less
work for me because the problems detected would occur anyways and have to
be dealt with by me. I just don't want to deal with extra steps and latency
manually.

So who and when is going to implement the automation?

Ariel

On Thu, May 7, 2015 at 11:11 AM, Benedict Elliott Smith <
belliottsm...@datastax.com> wrote:

> It's odd, because I honestly think this release process will be easier,
> since the stricter we make it the smoother it can become. It requires well
> formed commits from everyone, and lets the committers asynchronously
> confirm their work, and for it to never be in question *who* needs to fix
> something, nor what the effect of their fixing it will be. It means we can,
> as Ariel said, perform a bisect and honestly know its result is accurate.
> Small commits don't need to worry about fast-forwarding; in fact, nobody
> does. It can either be automated, or we can fast forward at a time that
> suits us. In which case the process is *the same* as it is currently.
>
> I have no interest in making the commit process harder.
>
>
> On Thu, May 7, 2015 at 3:59 PM, Jake Luciani <jak...@gmail.com> wrote:
>
> > Ok let's focus then on the idea that trunk is releasable.  Releasable
> > to me doesn't mean it can't contain a bad merge.
> >
> > It means it doesn't contain some untested and unstable feature.  We
> > can always "release from trunk" and we still have a release process.
> >
> > The idea that trunk must contain. a first time it hits the branch,
> > releasable code is way overboard
> >
> > On Thu, May 7, 2015 at 10:50 AM, Benedict Elliott Smith
> > <belliottsm...@datastax.com> wrote:
> > >>
> > >> This breaks your model of applying every commit ref by ref.
> > >
> > >
> > > How? The rebase only affects commits after the "real" branch, so it
> still
> > > cleanly fast forwards?
> > >
> > > Merging is *hard*. Especially 2.1 -> 3.0, with many breaking API
> changes
> > > (this is before 8099, which is going to make a *world* of hurt, and
> will
> > > stick around for a year). It is *very* easy to break things, with even
> > the
> > > utmost care.
> > >
> > > On Thu, May 7, 2015 at 3:46 PM, Jake Luciani <jak...@gmail.com> wrote:
> > >
> > >> You then fetch and repair
> > >> your local version and try again.
> > >>
> > >> This breaks your model of applying every commit ref by ref.
> > >>
> > >> I'm all for trying to avoid extra work/stability but we already have
> > >> added a layer of testing every change before commit.  I'm not going to
> > >> accept we need to also add a layer of testing before every merge.
> > >>
> > >>
> > >>
> > >>
> > >> On Thu, May 7, 2015 at 10:36 AM, Benedict Elliott Smith
> > >> <belliottsm...@datastax.com> wrote:
> > >> >>
> > >> >> wouldn't you need to force push?
> > >> >
> > >> >
> > >> > git push --force-with-lease
> > >> >
> > >> > This works essentially like CAS; if the remote repositories are not
> > the
> > >> > same as the one you have modified, it will fail. You then fetch and
> > >> repair
> > >> > your local version and try again.
> > >> >
> > >> > So what does this buy us?
> > >> >
> > >> >
> > >> > This buys us a clean development process. We bought into "always
> > >> > releasable". It's already a tall order; if we start weakening the
> > >> > constraints before we even get started, I am unconvinced we will
> > >> > successfully deliver. A monthly release cycle requires *strict*
> > >> processes,
> > >> > not *almost* strict, or strict*ish*.
> > >> >
> > >> > Something that could also help make a more streamlined process: if
> > actual
> > >> > commits were constructed on development branches ready for commit,
> > with a
> > >> > proper commit message and CHANGES.txt updated. Even more ideally:
> with
> > >> git
> > >> > rerere data for merging up to each of the branches. If we had that,
> > and
> > >> > each of the branches had been tested in CI, we would be much closer
> > than
> > >> we
> > >> > are currently, as the risk-at-commit is minimized.
> > >> >
> > >> > On Thu, May 7, 2015 at 2:48 PM, Jake Luciani <jak...@gmail.com>
> > wrote:
> > >> >
> > >> >> git rebase -i trunk_staging <ref~1>
> > >> >> fix the problem
> > >> >> git rebase --continue
> > >> >>
> > >> >> In this situation, if there was an untested follow on commit
> wouldn't
> > >> >> you need to force push?
> > >> >>
> > >> >> On Thu, May 7, 2015 at 9:28 AM, Benedict Elliott Smith
> > >> >> <belliottsm...@datastax.com> wrote:
> > >> >> >>
> > >> >> >> If we do it, we'll end up in weird situations which will be
> > annoying
> > >> for
> > >> >> >> everyone
> > >> >> >
> > >> >> >
> > >> >> > Such as? I'm not disputing, but if we're to assess the relative
> > >> >> > strengths/weaknesses, we need to have specifics to discuss.
> > >> >> >
> > >> >> > If we do go with this suggestion, we will most likely want to
> > enable a
> > >> >> > shared git rerere cache, so that rebasing is not painful when
> there
> > >> are
> > >> >> > future commits.
> > >> >> >
> > >> >> > If instead we go with "repairing" commits, we cannot have a
> > "queue" of
> > >> >> > things to merge up to. Say you have a string of commits waiting
> for
> > >> >> > approval C1 to C4; you made C1, and it broke something. You
> > introduce
> > >> C5
> > >> >> to
> > >> >> > fix it, but the tests are still broken. Did you not really fix
> it?
> > Or
> > >> >> > perhaps one of C2 to C4 are to blame, but which? And have you
> > >> >> accidentally
> > >> >> > broken *them* with your commit? Who knows. Either way, we
> > definitely
> > >> >> cannot
> > >> >> > fast forward. At the very best we can hope that the new merge did
> > not
> > >> >> > conflict or mess up the other people's C2 to C4 commits, and they
> > >> have to
> > >> >> > now merge on top. But what if another merge comes in, C6, in the
> > >> >> meantime;
> > >> >> > and C2 really did also break the tests in some way; how do we
> > >> determine
> > >> >> C2
> > >> >> > was to blame, and not C6, or C3 or C4? What do the committers for
> > >> each of
> > >> >> > these do? We end up in a lengthy tussle, and aren't able to
> commit
> > >> any of
> > >> >> > these to the mainline until all of them are resolved. Really we
> > have
> > >> to
> > >> >> > prevent any merges to the staging repository until the mistakes
> are
> > >> >> fixed.
> > >> >> > Since our races in these scenario are the length of time taken
> for
> > >> cassci
> > >> >> > to vet them, these problems are much more likely than current
> race
> > to
> > >> >> > commit.
> > >> >> >
> > >> >> > In the scheme I propose, in this scenario, the person who broke
> the
> > >> build
> > >> >> > rebases everyone's branches to his now fixed commit, and the next
> > >> broken
> > >> >> > commit gets blamed, and all other commits being merged in on top
> > can
> > >> go
> > >> >> in
> > >> >> > smoothly. The only pain point I can think of is the multi-branch
> > >> rebase,
> > >> >> > but this is solved by git rerere.
> > >> >> >
> > >> >> > I agree running tests is painful, but at least for the build,
> this
> > >> should
> > >> >> >> be the responsibility of the committer to build before merging
> > >> >> >
> > >> >> >
> > >> >> > Why make the distinction if we're going to have staging commits?
> > It's
> > >> a
> > >> >> bit
> > >> >> > of a waste of time to run three ant real-clean && ant tasks, and
> > >> >> increases
> > >> >> > the race window for merging (which is painful whether or not
> > involves
> > >> a
> > >> >> > rebase), and it is not a *typical* occurrence ("alarming" is
> > >> subjective)
> > >> >> >
> > >> >> > On Thu, May 7, 2015 at 2:12 PM, Sylvain Lebresne <
> > >> sylv...@datastax.com>
> > >> >> > wrote:
> > >> >> >
> > >> >> >> > If one of them breaks, we go and edit the _staging branch in
> > place
> > >> to
> > >> >> >> correct
> > >> >> >> > the problem, and let CI run again.
> > >> >> >>
> > >> >> >> I would strongly advise against *in place* edits. If we do it,
> > we'll
> > >> >> end up
> > >> >> >> in
> > >> >> >> weird situations which will be annoying for everyone. Editing
> > commits
> > >> >> that
> > >> >> >> have
> > >> >> >> been shared is almost always a bad idea and that's especially
> true
> > >> for
> > >> >> >> branch
> > >> >> >> that will have some amount of concurrency like those staging
> > >> branches.
> > >> >> >>
> > >> >> >> Even if such problems are rare, better to avoid them in the
> first
> > >> place
> > >> >> by
> > >> >> >> simply
> > >> >> >> commit new "fixup" commits as we currently do. Granted this give
> > you
> > >> a
> > >> >> >> slightly
> > >> >> >> less clean history but to the best of my knowledge, this hasn't
> > been
> > >> a
> > >> >> pain
> > >> >> >> point so far.
> > >> >> >>
> > >> >> >> > wait for CI; all clear
> > >> >> >> >
> > >> >> >> > git checkout cassandra-2.0; git merge cassandra-2.0_staging
> > >> >> >> > git checkout cassandra-2.1; git merge cassandra-2.1_staging
> > >> >> >> > git checkout trunk; git merge trunk_staging
> > >> >> >> >
> > >> >> >> > This does introduce some extra steps to the merge process
> > >> >> >>
> > >> >> >> If we do this, we should really automate that last part (have
> the
> > CI
> > >> >> >> environment merge the staging branch to the non-staging ones on
> > >> >> success).
> > >> >> >>
> > >> >> >> > It seems if we want an "always releasable" set of branches, we
> > need
> > >> >> >> something
> > >> >> >> > along these lines.
> > >> >> >>
> > >> >> >> Agreed as far as having staging branches vetoed by CI goes. Less
> > sure
> > >> >> about
> > >> >> >> the edit-commit-in-place part as said above.
> > >> >> >>
> > >> >> >> > I certainly break tests by mistake, or the build itself, with
> > >> alarming
> > >> >> >> regularity.
> > >> >> >>
> > >> >> >> I agree running tests is painful, but at least for the build,
> this
> > >> >> should
> > >> >> >> be
> > >> >> >> the responsibility of the committer to build before merging. We
> > all
> > >> >> forget
> > >> >> >> it from
> > >> >> >> times to times and that's ok, but it's not ok if it's
> "alarmingly
> > >> >> regular".
> > >> >> >>
> > >> >> >> --
> > >> >> >> Sylvain
> > >> >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >> --
> > >> >> http://twitter.com/tjake
> > >> >>
> > >>
> > >>
> > >>
> > >> --
> > >> http://twitter.com/tjake
> > >>
> >
> >
> >
> > --
> > http://twitter.com/tjake
> >
>

Reply via email to