so people need to make sure their PR merges to develop instead of master?
As I said I was sure there would be Jenkins issues but they must be small
since itâs just renaming of target branches. Releases are still made from
master so I donât see the issue there at all. Only intermediate CI tasks
are triggered on other branches. But they would have to be in your examples
too so I donât see the benefit of using an ad hoc method in terms of CI.
Weâve used this method for years with Apache PredictionIO with minimal CI
issues.
No the process below is not equivalent, treating master as develop removes
the primary (in my mind) benefit. In git flow the master is always stable
and the reflection of the last primary/core/default release with only
critical inter-release fixes. If someone wants to work with stable
up-to-date source, where do they go with the current process? I would claim
that there actually may be no place to find such a thing except by tracking
down some working commit number. It would depend on what stage the project
is in, in git flow there is never a questionâmaster is always stable. Git
flow also accounts for all the process exceptions and complexities you
mention below but in a standardized way that is documented so anyone can
read the rules and follow them. We/Mahout doesnât even have to write them,
they can just be referenced.
But we are re-arguing something I thought was already voted on and that is
another issue. If we need to re-debate this letâs make it stick one way or
the other.
I really appreciate you being release master and the thought and work
youâve put into this and if we decide to stick with it, fine. But it should
be a project decision that release masters follow, not up to each release
master. We are now embarking on a much more complex release than before
with multiple combinations of dependencies for binaries and so multiple
artifacts. We need to make the effort tame the complexity somehow or it
will just multiply.
Given the short nature of the current point release Iâd even suggest that
we target putting our decision in practice after the release, which is a
better time to make a change if we are to do so.
First issue, one does not simply just start using a develop branch. CI
only triggers off the 'main' branch, which is master by default. If we
move to the way you propose, then we need to file a ticket with INFRA I
believe. That can be done, but its not like we just start doing it one
day.
The current method is, when we cut a release- we make a new branch of that
release. Master is treated like dev. If you want the latest stable, you
would check out branch-0.13.0 . This is the way most major projects
(citing Spark, Flink, Zeppelin), including Mahout up to version 0.10.x
worked. To your point, there being a lack of a recent stable- that's fair,
but partly that's because no one created branches with the release for
0.10.? - 0.12.2.
For all intents and purposes, we are (now once again) following what you
propose, the only difference is we are treating master as dev, and
"branch-0.13.0" as master (e.g. last stable). Larger features go on their
own branch until they are ready to merge- e.g. ATM there is just one
feature branch CUDA. That was the big take away from this discussion last
time- there needed to be feature branches, as opposed to everyone running
around either working off WIP PRs or half baked merges, etc. To that end-
"website" was a feature branch, and iirc there has been one other feature
branch that has merged in the last couple of months but I forget what it
was at the moment.
Trevor Grant
Data Scientist
https://github.com/rawkintrevo
http://stackexchange.com/users/3002022/rawkintrevo
http://trevorgrant.org
*"Fortunate is he, who is able to know the causes of things." -Virgil*
Post by Pat FerrelPerhaps there is a misunderstanding about where a release comes
fromâmaster. So any release tools we have should work fine. Itâs just
that
Post by Pat Ferreluntil you are ready to pull the trigger, development is in develop or
more
Post by Pat Ferrelstrictly a âgetting a release readyâ branch called a release branch. This
sounds like a lot of branches but in practice itâs trivial to merge and
purge. Everything stays clean and rapid fire last minute fixes are
isolated
Post by Pat Ferrelto the release branch before going into master.
The original reason I brought this up is that our Git tools now allow
committers to delete old cruft laden branches that are created and
ephemeral with this method.
I just heard we are not using git flow (the process not the tool), we are
checking unclean (untested in any significant way) changes to master?
What
Post by Pat Ferrelis the develop branch used for?
The master is unstable most all the time with the old method, in fact
there is *no stable bundle of source ever* without git flow. With git
flow
Post by Pat Ferrelyou can peel off a bug fix and merge with master and users can pull it
expecting that everything else is stable and like the last build. This
has
Post by Pat Ferrelbit me with Mahout in the past as Iâm sure it has for everyone. This
doesnât fix that but it does limit the pain to committers.
If we arenât going to use it, fine but letâs not agree to it then do
something else. If itâs a matter of timing ok, I understood from Andrewâs
mail below there was no timing issue but I expect there will be Jenkins
or
Post by Pat FerrelTravis issues to iron out.
For reference: http://nvie.com/posts/a-successful-git-branching-model/ <
http://nvie.com/posts/a-successful-git-branching-model/> I have never
heard of someone who has tried it that didnât like it but it takes a leap
of faith unless you have git in your bones.
On Apr 22, 2017, at 10:42 AM, Andrew Musselman <
Okay develop it is; I'll cut a develop branch from master right now.
As we go, if people forget and push to master, we can merge those changes
into develop.
In addition, I'm making a 'website' branch for all work on the new
version
Post by Pat Ferrelof the site.
There are tools to implement git-flow that I havenât used and may have
some standardization built in but I think âdevelopâ is typical and safe.
On Apr 22, 2017, at 10:33 AM, Andrew Musselman <
Cool, I'll make a new dev branch now.
Dev, develop, any preference?
It hasn't been often but Iâve been bit by it and had to ask users of a
dependent project to checkout a specific commit, nasty.
The main affect would be to automation efforts that are currently wip.
On Apr 22, 2017, at 10:25 AM, Andrew Musselman <
I've worked in shops where that was the standard flow, in hg or git,
and
Post by Pat Ferrelit
worked great. I'm in favor of it especially as we add contributors and
make
it easier for people to submit new work.
Have we had that many times when master got messed up? I don't recall
more
than a few, but in any case the master/dev branch approach is solid.
Post by Pat FerrelIâve been introduced to what is now being called git-flow, which at
itâs
Post by Pat Ferrelsimplest is just a branching strategy with several key benefits. The
most
Post by Pat Ferrelimportant part of it is that the master branch is rock solid all the
time
Post by Pat Ferrelbecause we use the âdevelopâ branch for integrating Jiras, PRs,
features,
Post by Pat Ferreletc. Any ârock solidâ bit can be cherry-picked and put into master or
hot-fixes that fix a release but still require a source build.
The master becomes stable and can be relied on to be stable. It is
generally equal to the last release with only stable or required
exceptions.
Post by Pat FerrelDevelop is where all the integration and potentially risky work
happens.
Post by Pat FerrelIt is where most PRs are targeted.
A release causes develop to be merged with master and so it maintains
the
Post by Pat Ferrelstability of master.
The benefits of git-flow are more numerous but also seem scary because
the
Post by Pat Ferrelexplanation can be complex. Iâve switched all my projects and Apache
PredictionIO is where I was introduced to this, and it is actually
quite
Post by Pat Ferreleasy to manage and collaborate with this model. We just need to take
the
Post by Pat Ferrelplunge by creating a persistent branch in the Apache git repo called
âdevelopâ. From then on all commits will go to âdevelopâ and all PRs
should
Post by Pat Ferrelbe created against it. Just after a release is a good time for this.
https://datasift.github.io/gitflow/IntroducingGitFlow.html <
https://datasift.github.io/gitflow/IntroducingGitFlow.html>
What say you all?