[DISCUSS] Thinking about branch names

2014-09-22 Thread Josh Elser
After working on 1.5.2 and today's branch snafu, I think I've come to 
the conclusion that our branch naming is more pain than it's worth (I 
believe I was the one who primarily argued for branch names as they are 
current implemented, so take that as you want).


* Trying to making a new branch for the "next" version as a release is 
happening forces you to fight with Maven. Maven expects that your "next" 
is going to be on the same branch and the way it makes commits and bumps 
versions for you encourages this. Using a new branch for "next" is more 
manual work for the release manager.


* The time after we make a release, there's a bit of confusion (I do it 
too, just not publicly... yet) about "what branch do I put this fix for 
_version_ in?". It's not uncommon to put it in the "old" branch instead 
of the new one. The problem arises when the old branch has already been 
deleted. If a developer has an old version of that branch, there's 
nothing to tell them "hey, your copy of this branch is behind the 
remote's copy of this branch. I'm not accepting your push!" Having a 
single branch for a release line removes this hassle.


"Pictorially", I'm thinking we would change from the active branches 
{1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6, 
master}. (where a git tag would exist for the 1.6.1 RCs).


IIRC, the big argument for per-release branches was of encouraging 
frequent, targeted branches (I know the changes for this version go in 
this branch). I think most of this can be mitigated by keeping up with 
frequent releases and coordination with the individual cutting the release.


In short, I'm of the opinion that I think we should drop the 
".z-SNAPSHOT" suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to 
a shorter "x.y" (e.g. 1.5) that exists for the lifetime of that version. 
I think we could also use this approach if/when we change our versioning 
to start using the "x" component of "x.y.z".


Thoughts?

- Josh


Re: [DISCUSS] Thinking about branch names

2014-09-23 Thread Mike Drob
+1

On Mon, Sep 22, 2014 at 10:18 PM, Josh Elser  wrote:

> After working on 1.5.2 and today's branch snafu, I think I've come to the
> conclusion that our branch naming is more pain than it's worth (I believe I
> was the one who primarily argued for branch names as they are current
> implemented, so take that as you want).
>
> * Trying to making a new branch for the "next" version as a release is
> happening forces you to fight with Maven. Maven expects that your "next" is
> going to be on the same branch and the way it makes commits and bumps
> versions for you encourages this. Using a new branch for "next" is more
> manual work for the release manager.
>
> * The time after we make a release, there's a bit of confusion (I do it
> too, just not publicly... yet) about "what branch do I put this fix for
> _version_ in?". It's not uncommon to put it in the "old" branch instead of
> the new one. The problem arises when the old branch has already been
> deleted. If a developer has an old version of that branch, there's nothing
> to tell them "hey, your copy of this branch is behind the remote's copy of
> this branch. I'm not accepting your push!" Having a single branch for a
> release line removes this hassle.
>
> "Pictorially", I'm thinking we would change from the active branches
> {1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
> master}. (where a git tag would exist for the 1.6.1 RCs).
>
> IIRC, the big argument for per-release branches was of encouraging
> frequent, targeted branches (I know the changes for this version go in this
> branch). I think most of this can be mitigated by keeping up with frequent
> releases and coordination with the individual cutting the release.
>
> In short, I'm of the opinion that I think we should drop the ".z-SNAPSHOT"
> suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to a shorter "x.y"
> (e.g. 1.5) that exists for the lifetime of that version. I think we could
> also use this approach if/when we change our versioning to start using the
> "x" component of "x.y.z".
>
> Thoughts?
>
> - Josh
>


Re: [DISCUSS] Thinking about branch names

2014-09-23 Thread Sean Busbey
+1 on having branches named for major release lines instead of specific
versions.

On Mon, Sep 22, 2014 at 8:18 PM, Josh Elser  wrote:

> After working on 1.5.2 and today's branch snafu, I think I've come to the
> conclusion that our branch naming is more pain than it's worth (I believe I
> was the one who primarily argued for branch names as they are current
> implemented, so take that as you want).
>
> * Trying to making a new branch for the "next" version as a release is
> happening forces you to fight with Maven. Maven expects that your "next" is
> going to be on the same branch and the way it makes commits and bumps
> versions for you encourages this. Using a new branch for "next" is more
> manual work for the release manager.
>
> * The time after we make a release, there's a bit of confusion (I do it
> too, just not publicly... yet) about "what branch do I put this fix for
> _version_ in?". It's not uncommon to put it in the "old" branch instead of
> the new one. The problem arises when the old branch has already been
> deleted. If a developer has an old version of that branch, there's nothing
> to tell them "hey, your copy of this branch is behind the remote's copy of
> this branch. I'm not accepting your push!" Having a single branch for a
> release line removes this hassle.
>
> "Pictorially", I'm thinking we would change from the active branches
> {1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
> master}. (where a git tag would exist for the 1.6.1 RCs).
>
> IIRC, the big argument for per-release branches was of encouraging
> frequent, targeted branches (I know the changes for this version go in this
> branch). I think most of this can be mitigated by keeping up with frequent
> releases and coordination with the individual cutting the release.
>
> In short, I'm of the opinion that I think we should drop the ".z-SNAPSHOT"
> suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to a shorter "x.y"
> (e.g. 1.5) that exists for the lifetime of that version. I think we could
> also use this approach if/when we change our versioning to start using the
> "x" component of "x.y.z".
>
> Thoughts?
>
> - Josh
>



-- 
Sean


Re: [DISCUSS] Thinking about branch names

2014-09-23 Thread Christopher
+1 to static dev branch names per release series. (this would also fix the
Jenkins spam when the builds break due to branch name changes)

However, I kind of prefer 1.5.x or 1.5-dev, or similar, over simply 1.5,
which looks so much like a release version that I wouldn't want it to
generate any confusion.

Also, for reference, here's a few git commands that might help some people
avoid the situation that happened:
git remote update
git remote prune $(git remote)
git config --global push.default current # git < 1.8
git config --global push.default simple # git >= 1.8

The situation seems to primarily have occurred because of some pushes that
succeeded because the local clone was not aware that the remote branches
had disappeared. Pruning will clean those up, so that you'll get an error
if you try to push. Simple/current push strategy will ensure you don't push
all matching branches by default. Josh's proposed solution makes it less
likely the branches will disappear/change on a remote, but these are still
useful git commands to be aware of, and are related enough to this
situation, I thought I'd share.



--
Christopher L Tubbs II
http://gravatar.com/ctubbsii

On Mon, Sep 22, 2014 at 11:18 PM, Josh Elser  wrote:

> After working on 1.5.2 and today's branch snafu, I think I've come to the
> conclusion that our branch naming is more pain than it's worth (I believe I
> was the one who primarily argued for branch names as they are current
> implemented, so take that as you want).
>
> * Trying to making a new branch for the "next" version as a release is
> happening forces you to fight with Maven. Maven expects that your "next" is
> going to be on the same branch and the way it makes commits and bumps
> versions for you encourages this. Using a new branch for "next" is more
> manual work for the release manager.
>
> * The time after we make a release, there's a bit of confusion (I do it
> too, just not publicly... yet) about "what branch do I put this fix for
> _version_ in?". It's not uncommon to put it in the "old" branch instead of
> the new one. The problem arises when the old branch has already been
> deleted. If a developer has an old version of that branch, there's nothing
> to tell them "hey, your copy of this branch is behind the remote's copy of
> this branch. I'm not accepting your push!" Having a single branch for a
> release line removes this hassle.
>
> "Pictorially", I'm thinking we would change from the active branches
> {1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
> master}. (where a git tag would exist for the 1.6.1 RCs).
>
> IIRC, the big argument for per-release branches was of encouraging
> frequent, targeted branches (I know the changes for this version go in this
> branch). I think most of this can be mitigated by keeping up with frequent
> releases and coordination with the individual cutting the release.
>
> In short, I'm of the opinion that I think we should drop the ".z-SNAPSHOT"
> suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to a shorter "x.y"
> (e.g. 1.5) that exists for the lifetime of that version. I think we could
> also use this approach if/when we change our versioning to start using the
> "x" component of "x.y.z".
>
> Thoughts?
>
> - Josh
>


Re: [DISCUSS] Thinking about branch names

2014-09-23 Thread dlmarion

If you have a branch named 1.6, and you tag 1.6.1-RC1 from that branch, then do 
you run the risk of someone committing something destined for 1.6.2 being 
captured in a 1.6.1-RC2 tag? Do you want to prevent that? If so, how? 

On my project we use a long running development branch, but when we are ready 
for RC1 we branch for the release (e.g. release/1.6.1). All RC tags and 
associated fixes are done on the release branch and merged back into the 
development branch. 

- Original Message -

From: "Josh Elser"  
To: "dev"  
Sent: Monday, September 22, 2014 11:18:12 PM 
Subject: [DISCUSS] Thinking about branch names 

After working on 1.5.2 and today's branch snafu, I think I've come to 
the conclusion that our branch naming is more pain than it's worth (I 
believe I was the one who primarily argued for branch names as they are 
current implemented, so take that as you want). 

* Trying to making a new branch for the "next" version as a release is 
happening forces you to fight with Maven. Maven expects that your "next" 
is going to be on the same branch and the way it makes commits and bumps 
versions for you encourages this. Using a new branch for "next" is more 
manual work for the release manager. 

* The time after we make a release, there's a bit of confusion (I do it 
too, just not publicly... yet) about "what branch do I put this fix for 
_version_ in?". It's not uncommon to put it in the "old" branch instead 
of the new one. The problem arises when the old branch has already been 
deleted. If a developer has an old version of that branch, there's 
nothing to tell them "hey, your copy of this branch is behind the 
remote's copy of this branch. I'm not accepting your push!" Having a 
single branch for a release line removes this hassle. 

"Pictorially", I'm thinking we would change from the active branches 
{1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6, 
master}. (where a git tag would exist for the 1.6.1 RCs). 

IIRC, the big argument for per-release branches was of encouraging 
frequent, targeted branches (I know the changes for this version go in 
this branch). I think most of this can be mitigated by keeping up with 
frequent releases and coordination with the individual cutting the release. 

In short, I'm of the opinion that I think we should drop the 
".z-SNAPSHOT" suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to 
a shorter "x.y" (e.g. 1.5) that exists for the lifetime of that version. 
I think we could also use this approach if/when we change our versioning 
to start using the "x" component of "x.y.z". 

Thoughts? 

- Josh 



Re: [DISCUSS] Thinking about branch names

2014-09-23 Thread Corey Nolet
+1

Using separate branches in this manner just adds complexity. I was
wondering myself why we needed to create separate branches when all we're
doing is tagging/deleting the already released ones. The only difference
between where one leaves off and another begins  is the name of the branch.


On Tue, Sep 23, 2014 at 9:04 AM, Christopher  wrote:

> +1 to static dev branch names per release series. (this would also fix the
> Jenkins spam when the builds break due to branch name changes)
>
> However, I kind of prefer 1.5.x or 1.5-dev, or similar, over simply 1.5,
> which looks so much like a release version that I wouldn't want it to
> generate any confusion.
>
> Also, for reference, here's a few git commands that might help some people
> avoid the situation that happened:
> git remote update
> git remote prune $(git remote)
> git config --global push.default current # git < 1.8
> git config --global push.default simple # git >= 1.8
>
> The situation seems to primarily have occurred because of some pushes that
> succeeded because the local clone was not aware that the remote branches
> had disappeared. Pruning will clean those up, so that you'll get an error
> if you try to push. Simple/current push strategy will ensure you don't push
> all matching branches by default. Josh's proposed solution makes it less
> likely the branches will disappear/change on a remote, but these are still
> useful git commands to be aware of, and are related enough to this
> situation, I thought I'd share.
>
>
>
> --
> Christopher L Tubbs II
> http://gravatar.com/ctubbsii
>
> On Mon, Sep 22, 2014 at 11:18 PM, Josh Elser  wrote:
>
> > After working on 1.5.2 and today's branch snafu, I think I've come to the
> > conclusion that our branch naming is more pain than it's worth (I
> believe I
> > was the one who primarily argued for branch names as they are current
> > implemented, so take that as you want).
> >
> > * Trying to making a new branch for the "next" version as a release is
> > happening forces you to fight with Maven. Maven expects that your "next"
> is
> > going to be on the same branch and the way it makes commits and bumps
> > versions for you encourages this. Using a new branch for "next" is more
> > manual work for the release manager.
> >
> > * The time after we make a release, there's a bit of confusion (I do it
> > too, just not publicly... yet) about "what branch do I put this fix for
> > _version_ in?". It's not uncommon to put it in the "old" branch instead
> of
> > the new one. The problem arises when the old branch has already been
> > deleted. If a developer has an old version of that branch, there's
> nothing
> > to tell them "hey, your copy of this branch is behind the remote's copy
> of
> > this branch. I'm not accepting your push!" Having a single branch for a
> > release line removes this hassle.
> >
> > "Pictorially", I'm thinking we would change from the active branches
> > {1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
> > master}. (where a git tag would exist for the 1.6.1 RCs).
> >
> > IIRC, the big argument for per-release branches was of encouraging
> > frequent, targeted branches (I know the changes for this version go in
> this
> > branch). I think most of this can be mitigated by keeping up with
> frequent
> > releases and coordination with the individual cutting the release.
> >
> > In short, I'm of the opinion that I think we should drop the
> ".z-SNAPSHOT"
> > suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to a shorter
> "x.y"
> > (e.g. 1.5) that exists for the lifetime of that version. I think we could
> > also use this approach if/when we change our versioning to start using
> the
> > "x" component of "x.y.z".
> >
> > Thoughts?
> >
> > - Josh
> >
>


Re: [DISCUSS] Thinking about branch names

2014-09-23 Thread Bill Havanki
+1

I also like Dave's suggestion of branching just in time for a release to
keep work on it isolated. That would be an appropriate action to take at
feature freeze.

On Tue, Sep 23, 2014 at 9:23 AM, Corey Nolet  wrote:

> +1
>
> Using separate branches in this manner just adds complexity. I was
> wondering myself why we needed to create separate branches when all we're
> doing is tagging/deleting the already released ones. The only difference
> between where one leaves off and another begins  is the name of the branch.
>
>
> On Tue, Sep 23, 2014 at 9:04 AM, Christopher  wrote:
>
> > +1 to static dev branch names per release series. (this would also fix
> the
> > Jenkins spam when the builds break due to branch name changes)
> >
> > However, I kind of prefer 1.5.x or 1.5-dev, or similar, over simply 1.5,
> > which looks so much like a release version that I wouldn't want it to
> > generate any confusion.
> >
> > Also, for reference, here's a few git commands that might help some
> people
> > avoid the situation that happened:
> > git remote update
> > git remote prune $(git remote)
> > git config --global push.default current # git < 1.8
> > git config --global push.default simple # git >= 1.8
> >
> > The situation seems to primarily have occurred because of some pushes
> that
> > succeeded because the local clone was not aware that the remote branches
> > had disappeared. Pruning will clean those up, so that you'll get an error
> > if you try to push. Simple/current push strategy will ensure you don't
> push
> > all matching branches by default. Josh's proposed solution makes it less
> > likely the branches will disappear/change on a remote, but these are
> still
> > useful git commands to be aware of, and are related enough to this
> > situation, I thought I'd share.
> >
> >
> >
> > --
> > Christopher L Tubbs II
> > http://gravatar.com/ctubbsii
> >
> > On Mon, Sep 22, 2014 at 11:18 PM, Josh Elser 
> wrote:
> >
> > > After working on 1.5.2 and today's branch snafu, I think I've come to
> the
> > > conclusion that our branch naming is more pain than it's worth (I
> > believe I
> > > was the one who primarily argued for branch names as they are current
> > > implemented, so take that as you want).
> > >
> > > * Trying to making a new branch for the "next" version as a release is
> > > happening forces you to fight with Maven. Maven expects that your
> "next"
> > is
> > > going to be on the same branch and the way it makes commits and bumps
> > > versions for you encourages this. Using a new branch for "next" is more
> > > manual work for the release manager.
> > >
> > > * The time after we make a release, there's a bit of confusion (I do it
> > > too, just not publicly... yet) about "what branch do I put this fix for
> > > _version_ in?". It's not uncommon to put it in the "old" branch instead
> > of
> > > the new one. The problem arises when the old branch has already been
> > > deleted. If a developer has an old version of that branch, there's
> > nothing
> > > to tell them "hey, your copy of this branch is behind the remote's copy
> > of
> > > this branch. I'm not accepting your push!" Having a single branch for a
> > > release line removes this hassle.
> > >
> > > "Pictorially", I'm thinking we would change from the active branches
> > > {1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
> > > master}. (where a git tag would exist for the 1.6.1 RCs).
> > >
> > > IIRC, the big argument for per-release branches was of encouraging
> > > frequent, targeted branches (I know the changes for this version go in
> > this
> > > branch). I think most of this can be mitigated by keeping up with
> > frequent
> > > releases and coordination with the individual cutting the release.
> > >
> > > In short, I'm of the opinion that I think we should drop the
> > ".z-SNAPSHOT"
> > > suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to a shorter
> > "x.y"
> > > (e.g. 1.5) that exists for the lifetime of that version. I think we
> could
> > > also use this approach if/when we change our versioning to start using
> > the
> > > "x" component of "x.y.z".
> > >
> > > Thoughts?
> > >
> > > - Josh
> > >
> >
>



-- 
// Bill Havanki
// Solutions Architect, Cloudera Govt Solutions
// 443.686.9283


Re: [DISCUSS] Thinking about branch names

2014-09-23 Thread Josh Elser
There are two cases I see here (RCx failed, and you want to RCx+1):
there were changes upstream and we want to include them all in the
next release candidate or there were changes upstream and we only want
some of them in the release candidate.

I highly anticipate the former to be the common case over the latter,
but some plan for the latter would be good. I can see benefit to
having a specific branch to isolate changes before an RC, but I could
also see cases where it's just more work for the person making the RC.
Ultimately, it's going to be some combination of merge or cherry-pick
on top of RCx to make RCx+1. Thus, I think it can be left to the
discretion of the person making the RC as to how they want to do it
rather than stress over it now and try to come up with "you must do
this" guidelines (again).

On Tue, Sep 23, 2014 at 9:33 AM,   wrote:
>
> If you have a branch named 1.6, and you tag 1.6.1-RC1 from that branch, then 
> do you run the risk of someone committing something destined for 1.6.2 being 
> captured in a 1.6.1-RC2 tag? Do you want to prevent that? If so, how?
>
> On my project we use a long running development branch, but when we are ready 
> for RC1 we branch for the release (e.g. release/1.6.1). All RC tags and 
> associated fixes are done on the release branch and merged back into the 
> development branch.
>
> - Original Message -
>
> From: "Josh Elser" 
> To: "dev" 
> Sent: Monday, September 22, 2014 11:18:12 PM
> Subject: [DISCUSS] Thinking about branch names
>
> After working on 1.5.2 and today's branch snafu, I think I've come to
> the conclusion that our branch naming is more pain than it's worth (I
> believe I was the one who primarily argued for branch names as they are
> current implemented, so take that as you want).
>
> * Trying to making a new branch for the "next" version as a release is
> happening forces you to fight with Maven. Maven expects that your "next"
> is going to be on the same branch and the way it makes commits and bumps
> versions for you encourages this. Using a new branch for "next" is more
> manual work for the release manager.
>
> * The time after we make a release, there's a bit of confusion (I do it
> too, just not publicly... yet) about "what branch do I put this fix for
> _version_ in?". It's not uncommon to put it in the "old" branch instead
> of the new one. The problem arises when the old branch has already been
> deleted. If a developer has an old version of that branch, there's
> nothing to tell them "hey, your copy of this branch is behind the
> remote's copy of this branch. I'm not accepting your push!" Having a
> single branch for a release line removes this hassle.
>
> "Pictorially", I'm thinking we would change from the active branches
> {1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
> master}. (where a git tag would exist for the 1.6.1 RCs).
>
> IIRC, the big argument for per-release branches was of encouraging
> frequent, targeted branches (I know the changes for this version go in
> this branch). I think most of this can be mitigated by keeping up with
> frequent releases and coordination with the individual cutting the release.
>
> In short, I'm of the opinion that I think we should drop the
> ".z-SNAPSHOT" suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to
> a shorter "x.y" (e.g. 1.5) that exists for the lifetime of that version.
> I think we could also use this approach if/when we change our versioning
> to start using the "x" component of "x.y.z".
>
> Thoughts?
>
> - Josh
>


Re: [DISCUSS] Thinking about branch names

2014-09-23 Thread Josh Elser
Personally, I like the succinctness of "1.5" over the ones you
presented. I don't feel like "1.5.x" or "1.5-dev" tell me anything
more than "1.5" already did so they just turn into more typing. I
don't really think there's a high chance that we ever abandon x.y.z
version strings, so there isn't a big chance for it to look like a
release.

For context, Hadoop (and other related projects) tend to do a
"branch-X" and "branch-X.Y". For the same reasons as above, I feel
like the "branch-" is unnecessary.

Is anyone else concerned about potential confusion having "x.y" branch names?

On Tue, Sep 23, 2014 at 9:04 AM, Christopher  wrote:
> +1 to static dev branch names per release series. (this would also fix the
> Jenkins spam when the builds break due to branch name changes)
>
> However, I kind of prefer 1.5.x or 1.5-dev, or similar, over simply 1.5,
> which looks so much like a release version that I wouldn't want it to
> generate any confusion.
>
> Also, for reference, here's a few git commands that might help some people
> avoid the situation that happened:
> git remote update
> git remote prune $(git remote)
> git config --global push.default current # git < 1.8
> git config --global push.default simple # git >= 1.8
>
> The situation seems to primarily have occurred because of some pushes that
> succeeded because the local clone was not aware that the remote branches
> had disappeared. Pruning will clean those up, so that you'll get an error
> if you try to push. Simple/current push strategy will ensure you don't push
> all matching branches by default. Josh's proposed solution makes it less
> likely the branches will disappear/change on a remote, but these are still
> useful git commands to be aware of, and are related enough to this
> situation, I thought I'd share.
>
>
>
> --
> Christopher L Tubbs II
> http://gravatar.com/ctubbsii
>
> On Mon, Sep 22, 2014 at 11:18 PM, Josh Elser  wrote:
>
>> After working on 1.5.2 and today's branch snafu, I think I've come to the
>> conclusion that our branch naming is more pain than it's worth (I believe I
>> was the one who primarily argued for branch names as they are current
>> implemented, so take that as you want).
>>
>> * Trying to making a new branch for the "next" version as a release is
>> happening forces you to fight with Maven. Maven expects that your "next" is
>> going to be on the same branch and the way it makes commits and bumps
>> versions for you encourages this. Using a new branch for "next" is more
>> manual work for the release manager.
>>
>> * The time after we make a release, there's a bit of confusion (I do it
>> too, just not publicly... yet) about "what branch do I put this fix for
>> _version_ in?". It's not uncommon to put it in the "old" branch instead of
>> the new one. The problem arises when the old branch has already been
>> deleted. If a developer has an old version of that branch, there's nothing
>> to tell them "hey, your copy of this branch is behind the remote's copy of
>> this branch. I'm not accepting your push!" Having a single branch for a
>> release line removes this hassle.
>>
>> "Pictorially", I'm thinking we would change from the active branches
>> {1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
>> master}. (where a git tag would exist for the 1.6.1 RCs).
>>
>> IIRC, the big argument for per-release branches was of encouraging
>> frequent, targeted branches (I know the changes for this version go in this
>> branch). I think most of this can be mitigated by keeping up with frequent
>> releases and coordination with the individual cutting the release.
>>
>> In short, I'm of the opinion that I think we should drop the ".z-SNAPSHOT"
>> suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to a shorter "x.y"
>> (e.g. 1.5) that exists for the lifetime of that version. I think we could
>> also use this approach if/when we change our versioning to start using the
>> "x" component of "x.y.z".
>>
>> Thoughts?
>>
>> - Josh
>>


Re: [DISCUSS] Thinking about branch names

2014-09-23 Thread Keith Turner
On Tue, Sep 23, 2014 at 11:45 AM, Josh Elser  wrote:

> Personally, I like the succinctness of "1.5" over the ones you
> presented. I don't feel like "1.5.x" or "1.5-dev" tell me anything
> more than "1.5" already did so they just turn into more typing. I
> don't really think there's a high chance that we ever abandon x.y.z
> version strings, so there isn't a big chance for it to look like a
> release.
>
> For context, Hadoop (and other related projects) tend to do a
> "branch-X" and "branch-X.Y". For the same reasons as above, I feel
> like the "branch-" is unnecessary.
>
> Is anyone else concerned about potential confusion having "x.y" branch
> names?
>

I am not.  I would be if there was something in the way that git worked
that made this choice confusing.  When I checkout a tag, git prints out
tome about being in detached HEAD state, thats fairly obvious.  In there
anything else that may be confusing w/ the way git works w/ these tag names?


>
> On Tue, Sep 23, 2014 at 9:04 AM, Christopher  wrote:
> > +1 to static dev branch names per release series. (this would also fix
> the
> > Jenkins spam when the builds break due to branch name changes)
> >
> > However, I kind of prefer 1.5.x or 1.5-dev, or similar, over simply 1.5,
> > which looks so much like a release version that I wouldn't want it to
> > generate any confusion.
> >
> > Also, for reference, here's a few git commands that might help some
> people
> > avoid the situation that happened:
> > git remote update
> > git remote prune $(git remote)
> > git config --global push.default current # git < 1.8
> > git config --global push.default simple # git >= 1.8
> >
> > The situation seems to primarily have occurred because of some pushes
> that
> > succeeded because the local clone was not aware that the remote branches
> > had disappeared. Pruning will clean those up, so that you'll get an error
> > if you try to push. Simple/current push strategy will ensure you don't
> push
> > all matching branches by default. Josh's proposed solution makes it less
> > likely the branches will disappear/change on a remote, but these are
> still
> > useful git commands to be aware of, and are related enough to this
> > situation, I thought I'd share.
> >
> >
> >
> > --
> > Christopher L Tubbs II
> > http://gravatar.com/ctubbsii
> >
> > On Mon, Sep 22, 2014 at 11:18 PM, Josh Elser 
> wrote:
> >
> >> After working on 1.5.2 and today's branch snafu, I think I've come to
> the
> >> conclusion that our branch naming is more pain than it's worth (I
> believe I
> >> was the one who primarily argued for branch names as they are current
> >> implemented, so take that as you want).
> >>
> >> * Trying to making a new branch for the "next" version as a release is
> >> happening forces you to fight with Maven. Maven expects that your
> "next" is
> >> going to be on the same branch and the way it makes commits and bumps
> >> versions for you encourages this. Using a new branch for "next" is more
> >> manual work for the release manager.
> >>
> >> * The time after we make a release, there's a bit of confusion (I do it
> >> too, just not publicly... yet) about "what branch do I put this fix for
> >> _version_ in?". It's not uncommon to put it in the "old" branch instead
> of
> >> the new one. The problem arises when the old branch has already been
> >> deleted. If a developer has an old version of that branch, there's
> nothing
> >> to tell them "hey, your copy of this branch is behind the remote's copy
> of
> >> this branch. I'm not accepting your push!" Having a single branch for a
> >> release line removes this hassle.
> >>
> >> "Pictorially", I'm thinking we would change from the active branches
> >> {1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
> >> master}. (where a git tag would exist for the 1.6.1 RCs).
> >>
> >> IIRC, the big argument for per-release branches was of encouraging
> >> frequent, targeted branches (I know the changes for this version go in
> this
> >> branch). I think most of this can be mitigated by keeping up with
> frequent
> >> releases and coordination with the individual cutting the release.
> >>
> >> In short, I'm of the opinion that I think we should drop the
> ".z-SNAPSHOT"
> >> suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to a shorter
> "x.y"
> >> (e.g. 1.5) that exists for the lifetime of that version. I think we
> could
> >> also use this approach if/when we change our versioning to start using
> the
> >> "x" component of "x.y.z".
> >>
> >> Thoughts?
> >>
> >> - Josh
> >>
>


Re: [DISCUSS] Thinking about branch names

2014-09-23 Thread Bill Havanki
I'm fine with the release manager selecting the branching strategy for a
release. A benefit to having a release branch is that it makes merges from
upstream after the branch is established explicit, so it's much less likely
any undesirable commit will sneak in (i.e., escape the notice of the
release manager).

Come to think of it, as soon as upstream gets one undesirable commit, a
release branch must be made. So another benefit is that people won't feel
like they need to hold off on commits just because a release is being put
together.

Still, I'm not stressing about it. It can certainly be a "guideline" or
"best practice", as with lots of other things.

On Tue, Sep 23, 2014 at 11:40 AM, Josh Elser  wrote:

> There are two cases I see here (RCx failed, and you want to RCx+1):
> there were changes upstream and we want to include them all in the
> next release candidate or there were changes upstream and we only want
> some of them in the release candidate.
>
> I highly anticipate the former to be the common case over the latter,
> but some plan for the latter would be good. I can see benefit to
> having a specific branch to isolate changes before an RC, but I could
> also see cases where it's just more work for the person making the RC.
> Ultimately, it's going to be some combination of merge or cherry-pick
> on top of RCx to make RCx+1. Thus, I think it can be left to the
> discretion of the person making the RC as to how they want to do it
> rather than stress over it now and try to come up with "you must do
> this" guidelines (again).
>
> On Tue, Sep 23, 2014 at 9:33 AM,   wrote:
> >
> > If you have a branch named 1.6, and you tag 1.6.1-RC1 from that branch,
> then do you run the risk of someone committing something destined for 1.6.2
> being captured in a 1.6.1-RC2 tag? Do you want to prevent that? If so, how?
> >
> > On my project we use a long running development branch, but when we are
> ready for RC1 we branch for the release (e.g. release/1.6.1). All RC tags
> and associated fixes are done on the release branch and merged back into
> the development branch.
> >
> > - Original Message -
> >
> > From: "Josh Elser" 
> > To: "dev" 
> > Sent: Monday, September 22, 2014 11:18:12 PM
> > Subject: [DISCUSS] Thinking about branch names
> >
> > After working on 1.5.2 and today's branch snafu, I think I've come to
> > the conclusion that our branch naming is more pain than it's worth (I
> > believe I was the one who primarily argued for branch names as they are
> > current implemented, so take that as you want).
> >
> > * Trying to making a new branch for the "next" version as a release is
> > happening forces you to fight with Maven. Maven expects that your "next"
> > is going to be on the same branch and the way it makes commits and bumps
> > versions for you encourages this. Using a new branch for "next" is more
> > manual work for the release manager.
> >
> > * The time after we make a release, there's a bit of confusion (I do it
> > too, just not publicly... yet) about "what branch do I put this fix for
> > _version_ in?". It's not uncommon to put it in the "old" branch instead
> > of the new one. The problem arises when the old branch has already been
> > deleted. If a developer has an old version of that branch, there's
> > nothing to tell them "hey, your copy of this branch is behind the
> > remote's copy of this branch. I'm not accepting your push!" Having a
> > single branch for a release line removes this hassle.
> >
> > "Pictorially", I'm thinking we would change from the active branches
> > {1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
> > master}. (where a git tag would exist for the 1.6.1 RCs).
> >
> > IIRC, the big argument for per-release branches was of encouraging
> > frequent, targeted branches (I know the changes for this version go in
> > this branch). I think most of this can be mitigated by keeping up with
> > frequent releases and coordination with the individual cutting the
> release.
> >
> > In short, I'm of the opinion that I think we should drop the
> > ".z-SNAPSHOT" suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to
> > a shorter "x.y" (e.g. 1.5) that exists for the lifetime of that version.
> > I think we could also use this approach if/when we change our versioning
> > to start using the "x" component of "x.y.z".
> >
> > Thoughts?
> >
> > - Josh
> >
>



-- 
// Bill Havanki
// Solutions Architect, Cloudera Govt Solutions
// 443.686.9283


Re: [DISCUSS] Thinking about branch names

2014-09-23 Thread Christopher
This is easily resolved if we're limiting fixes on these branches to
bugfixes, and not backporting features. If a fix makes it in the branch
before a RC, there's no reason it can't be evaluated for release, I'd
think. In these bugfix branches, we typically haven't had decisions about
whether to include a particular fix in the current bugfix release being
considered, or the next bugfix release. We typically have only made those
considerations for major versions.

That said, I think it's reasonable to branch first anyway. I typically do
this when I build a release candidate, because it's easier to blow away
that branch and any commits that the release plugin creates, if rejected.
It's also pretty easy to merge once approved.


--
Christopher L Tubbs II
http://gravatar.com/ctubbsii

On Tue, Sep 23, 2014 at 9:33 AM,  wrote:

>
> If you have a branch named 1.6, and you tag 1.6.1-RC1 from that branch,
> then do you run the risk of someone committing something destined for 1.6.2
> being captured in a 1.6.1-RC2 tag? Do you want to prevent that? If so, how?
>
> On my project we use a long running development branch, but when we are
> ready for RC1 we branch for the release (e.g. release/1.6.1). All RC tags
> and associated fixes are done on the release branch and merged back into
> the development branch.
>
> - Original Message -
>
> From: "Josh Elser" 
> To: "dev" 
> Sent: Monday, September 22, 2014 11:18:12 PM
> Subject: [DISCUSS] Thinking about branch names
>
> After working on 1.5.2 and today's branch snafu, I think I've come to
> the conclusion that our branch naming is more pain than it's worth (I
> believe I was the one who primarily argued for branch names as they are
> current implemented, so take that as you want).
>
> * Trying to making a new branch for the "next" version as a release is
> happening forces you to fight with Maven. Maven expects that your "next"
> is going to be on the same branch and the way it makes commits and bumps
> versions for you encourages this. Using a new branch for "next" is more
> manual work for the release manager.
>
> * The time after we make a release, there's a bit of confusion (I do it
> too, just not publicly... yet) about "what branch do I put this fix for
> _version_ in?". It's not uncommon to put it in the "old" branch instead
> of the new one. The problem arises when the old branch has already been
> deleted. If a developer has an old version of that branch, there's
> nothing to tell them "hey, your copy of this branch is behind the
> remote's copy of this branch. I'm not accepting your push!" Having a
> single branch for a release line removes this hassle.
>
> "Pictorially", I'm thinking we would change from the active branches
> {1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
> master}. (where a git tag would exist for the 1.6.1 RCs).
>
> IIRC, the big argument for per-release branches was of encouraging
> frequent, targeted branches (I know the changes for this version go in
> this branch). I think most of this can be mitigated by keeping up with
> frequent releases and coordination with the individual cutting the release.
>
> In short, I'm of the opinion that I think we should drop the
> ".z-SNAPSHOT" suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to
> a shorter "x.y" (e.g. 1.5) that exists for the lifetime of that version.
> I think we could also use this approach if/when we change our versioning
> to start using the "x" component of "x.y.z".
>
> Thoughts?
>
> - Josh
>
>


Re: [DISCUSS] Thinking about branch names

2014-09-23 Thread Christopher
Another point to consider here is that many projects (such as guava) omit
".0" suffixes on versions (releasing, for instance 11, followed by 11.0.1
and 11.0.2 for bugfixes).

It's probably not a big deal. It's only a slight risk of confusion, and SCM
is not for users, it's for devs, so I'm fine with the succinctness, as long
as we don't ever create tags with the same names.


--
Christopher L Tubbs II
http://gravatar.com/ctubbsii

On Tue, Sep 23, 2014 at 11:45 AM, Josh Elser  wrote:

> Personally, I like the succinctness of "1.5" over the ones you
> presented. I don't feel like "1.5.x" or "1.5-dev" tell me anything
> more than "1.5" already did so they just turn into more typing. I
> don't really think there's a high chance that we ever abandon x.y.z
> version strings, so there isn't a big chance for it to look like a
> release.
>
> For context, Hadoop (and other related projects) tend to do a
> "branch-X" and "branch-X.Y". For the same reasons as above, I feel
> like the "branch-" is unnecessary.
>
> Is anyone else concerned about potential confusion having "x.y" branch
> names?
>
> On Tue, Sep 23, 2014 at 9:04 AM, Christopher  wrote:
> > +1 to static dev branch names per release series. (this would also fix
> the
> > Jenkins spam when the builds break due to branch name changes)
> >
> > However, I kind of prefer 1.5.x or 1.5-dev, or similar, over simply 1.5,
> > which looks so much like a release version that I wouldn't want it to
> > generate any confusion.
> >
> > Also, for reference, here's a few git commands that might help some
> people
> > avoid the situation that happened:
> > git remote update
> > git remote prune $(git remote)
> > git config --global push.default current # git < 1.8
> > git config --global push.default simple # git >= 1.8
> >
> > The situation seems to primarily have occurred because of some pushes
> that
> > succeeded because the local clone was not aware that the remote branches
> > had disappeared. Pruning will clean those up, so that you'll get an error
> > if you try to push. Simple/current push strategy will ensure you don't
> push
> > all matching branches by default. Josh's proposed solution makes it less
> > likely the branches will disappear/change on a remote, but these are
> still
> > useful git commands to be aware of, and are related enough to this
> > situation, I thought I'd share.
> >
> >
> >
> > --
> > Christopher L Tubbs II
> > http://gravatar.com/ctubbsii
> >
> > On Mon, Sep 22, 2014 at 11:18 PM, Josh Elser 
> wrote:
> >
> >> After working on 1.5.2 and today's branch snafu, I think I've come to
> the
> >> conclusion that our branch naming is more pain than it's worth (I
> believe I
> >> was the one who primarily argued for branch names as they are current
> >> implemented, so take that as you want).
> >>
> >> * Trying to making a new branch for the "next" version as a release is
> >> happening forces you to fight with Maven. Maven expects that your
> "next" is
> >> going to be on the same branch and the way it makes commits and bumps
> >> versions for you encourages this. Using a new branch for "next" is more
> >> manual work for the release manager.
> >>
> >> * The time after we make a release, there's a bit of confusion (I do it
> >> too, just not publicly... yet) about "what branch do I put this fix for
> >> _version_ in?". It's not uncommon to put it in the "old" branch instead
> of
> >> the new one. The problem arises when the old branch has already been
> >> deleted. If a developer has an old version of that branch, there's
> nothing
> >> to tell them "hey, your copy of this branch is behind the remote's copy
> of
> >> this branch. I'm not accepting your push!" Having a single branch for a
> >> release line removes this hassle.
> >>
> >> "Pictorially", I'm thinking we would change from the active branches
> >> {1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
> >> master}. (where a git tag would exist for the 1.6.1 RCs).
> >>
> >> IIRC, the big argument for per-release branches was of encouraging
> >> frequent, targeted branches (I know the changes for this version go in
> this
> >> branch). I think most of this can be mitigated by keeping up with
> frequent
> >> releases and coordination with the individual cutting the release.
> >>
> >> In short, I'm of the opinion that I think we should drop the
> ".z-SNAPSHOT"
> >> suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to a shorter
> "x.y"
> >> (e.g. 1.5) that exists for the lifetime of that version. I think we
> could
> >> also use this approach if/when we change our versioning to start using
> the
> >> "x" component of "x.y.z".
> >>
> >> Thoughts?
> >>
> >> - Josh
> >>
>


Re: [DISCUSS] Thinking about branch names

2014-09-23 Thread Josh Elser
Good point, Christopher. I didn't really consider projects outside of 
the Hadoop ecosystem. As long as we're cognizant (if our versioning 
strings do get "better" moving forward), I think this shouldn't be an 
issue. Hold me honest :)


Christopher wrote:

Another point to consider here is that many projects (such as guava) omit
".0" suffixes on versions (releasing, for instance 11, followed by 11.0.1
and 11.0.2 for bugfixes).

It's probably not a big deal. It's only a slight risk of confusion, and SCM
is not for users, it's for devs, so I'm fine with the succinctness, as long
as we don't ever create tags with the same names.


--
Christopher L Tubbs II
http://gravatar.com/ctubbsii

On Tue, Sep 23, 2014 at 11:45 AM, Josh Elser  wrote:


Personally, I like the succinctness of "1.5" over the ones you
presented. I don't feel like "1.5.x" or "1.5-dev" tell me anything
more than "1.5" already did so they just turn into more typing. I
don't really think there's a high chance that we ever abandon x.y.z
version strings, so there isn't a big chance for it to look like a
release.

For context, Hadoop (and other related projects) tend to do a
"branch-X" and "branch-X.Y". For the same reasons as above, I feel
like the "branch-" is unnecessary.

Is anyone else concerned about potential confusion having "x.y" branch
names?

On Tue, Sep 23, 2014 at 9:04 AM, Christopher  wrote:

+1 to static dev branch names per release series. (this would also fix

the

Jenkins spam when the builds break due to branch name changes)

However, I kind of prefer 1.5.x or 1.5-dev, or similar, over simply 1.5,
which looks so much like a release version that I wouldn't want it to
generate any confusion.

Also, for reference, here's a few git commands that might help some

people

avoid the situation that happened:
git remote update
git remote prune $(git remote)
git config --global push.default current # git<  1.8
git config --global push.default simple # git>= 1.8

The situation seems to primarily have occurred because of some pushes

that

succeeded because the local clone was not aware that the remote branches
had disappeared. Pruning will clean those up, so that you'll get an error
if you try to push. Simple/current push strategy will ensure you don't

push

all matching branches by default. Josh's proposed solution makes it less
likely the branches will disappear/change on a remote, but these are

still

useful git commands to be aware of, and are related enough to this
situation, I thought I'd share.



--
Christopher L Tubbs II
http://gravatar.com/ctubbsii

On Mon, Sep 22, 2014 at 11:18 PM, Josh Elser

wrote:

After working on 1.5.2 and today's branch snafu, I think I've come to

the

conclusion that our branch naming is more pain than it's worth (I

believe I

was the one who primarily argued for branch names as they are current
implemented, so take that as you want).

* Trying to making a new branch for the "next" version as a release is
happening forces you to fight with Maven. Maven expects that your

"next" is

going to be on the same branch and the way it makes commits and bumps
versions for you encourages this. Using a new branch for "next" is more
manual work for the release manager.

* The time after we make a release, there's a bit of confusion (I do it
too, just not publicly... yet) about "what branch do I put this fix for
_version_ in?". It's not uncommon to put it in the "old" branch instead

of

the new one. The problem arises when the old branch has already been
deleted. If a developer has an old version of that branch, there's

nothing

to tell them "hey, your copy of this branch is behind the remote's copy

of

this branch. I'm not accepting your push!" Having a single branch for a
release line removes this hassle.

"Pictorially", I'm thinking we would change from the active branches
{1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
master}. (where a git tag would exist for the 1.6.1 RCs).

IIRC, the big argument for per-release branches was of encouraging
frequent, targeted branches (I know the changes for this version go in

this

branch). I think most of this can be mitigated by keeping up with

frequent

releases and coordination with the individual cutting the release.

In short, I'm of the opinion that I think we should drop the

".z-SNAPSHOT"

suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to a shorter

"x.y"

(e.g. 1.5) that exists for the lifetime of that version. I think we

could

also use this approach if/when we change our versioning to start using

the

"x" component of "x.y.z".

Thoughts?

- Josh





Re: [DISCUSS] Thinking about branch names

2014-09-26 Thread Christopher
I see lots of +1s on this thread, and no -1s. There seems to be a lot of
consensus. Josh, do you want to go ahead and make this change?


--
Christopher L Tubbs II
http://gravatar.com/ctubbsii

On Wed, Sep 24, 2014 at 1:26 AM, Josh Elser  wrote:

> Good point, Christopher. I didn't really consider projects outside of the
> Hadoop ecosystem. As long as we're cognizant (if our versioning strings do
> get "better" moving forward), I think this shouldn't be an issue. Hold me
> honest :)
>
>
> Christopher wrote:
>
>> Another point to consider here is that many projects (such as guava) omit
>> ".0" suffixes on versions (releasing, for instance 11, followed by 11.0.1
>> and 11.0.2 for bugfixes).
>>
>> It's probably not a big deal. It's only a slight risk of confusion, and
>> SCM
>> is not for users, it's for devs, so I'm fine with the succinctness, as
>> long
>> as we don't ever create tags with the same names.
>>
>>
>> --
>> Christopher L Tubbs II
>> http://gravatar.com/ctubbsii
>>
>> On Tue, Sep 23, 2014 at 11:45 AM, Josh Elser
>> wrote:
>>
>>  Personally, I like the succinctness of "1.5" over the ones you
>>> presented. I don't feel like "1.5.x" or "1.5-dev" tell me anything
>>> more than "1.5" already did so they just turn into more typing. I
>>> don't really think there's a high chance that we ever abandon x.y.z
>>> version strings, so there isn't a big chance for it to look like a
>>> release.
>>>
>>> For context, Hadoop (and other related projects) tend to do a
>>> "branch-X" and "branch-X.Y". For the same reasons as above, I feel
>>> like the "branch-" is unnecessary.
>>>
>>> Is anyone else concerned about potential confusion having "x.y" branch
>>> names?
>>>
>>> On Tue, Sep 23, 2014 at 9:04 AM, Christopher
>>> wrote:
>>>
 +1 to static dev branch names per release series. (this would also fix

>>> the
>>>
 Jenkins spam when the builds break due to branch name changes)

 However, I kind of prefer 1.5.x or 1.5-dev, or similar, over simply 1.5,
 which looks so much like a release version that I wouldn't want it to
 generate any confusion.

 Also, for reference, here's a few git commands that might help some

>>> people
>>>
 avoid the situation that happened:
 git remote update
 git remote prune $(git remote)
 git config --global push.default current # git<  1.8
 git config --global push.default simple # git>= 1.8

 The situation seems to primarily have occurred because of some pushes

>>> that
>>>
 succeeded because the local clone was not aware that the remote branches
 had disappeared. Pruning will clean those up, so that you'll get an
 error
 if you try to push. Simple/current push strategy will ensure you don't

>>> push
>>>
 all matching branches by default. Josh's proposed solution makes it less
 likely the branches will disappear/change on a remote, but these are

>>> still
>>>
 useful git commands to be aware of, and are related enough to this
 situation, I thought I'd share.



 --
 Christopher L Tubbs II
 http://gravatar.com/ctubbsii

 On Mon, Sep 22, 2014 at 11:18 PM, Josh Elser

>>> wrote:
>>>
 After working on 1.5.2 and today's branch snafu, I think I've come to
>
 the
>>>
 conclusion that our branch naming is more pain than it's worth (I
>
 believe I
>>>
 was the one who primarily argued for branch names as they are current
> implemented, so take that as you want).
>
> * Trying to making a new branch for the "next" version as a release is
> happening forces you to fight with Maven. Maven expects that your
>
 "next" is
>>>
 going to be on the same branch and the way it makes commits and bumps
> versions for you encourages this. Using a new branch for "next" is more
> manual work for the release manager.
>
> * The time after we make a release, there's a bit of confusion (I do it
> too, just not publicly... yet) about "what branch do I put this fix for
> _version_ in?". It's not uncommon to put it in the "old" branch instead
>
 of
>>>
 the new one. The problem arises when the old branch has already been
> deleted. If a developer has an old version of that branch, there's
>
 nothing
>>>
 to tell them "hey, your copy of this branch is behind the remote's copy
>
 of
>>>
 this branch. I'm not accepting your push!" Having a single branch for a
> release line removes this hassle.
>
> "Pictorially", I'm thinking we would change from the active branches
> {1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
> master}. (where a git tag would exist for the 1.6.1 RCs).
>
> IIRC, the big argument for per-release branches was of encouraging
> frequent, targeted branches (I know the changes for this version go in
>
 this
>>>
 branch). I think most of this can be mitigated by keeping up 

Re: [DISCUSS] Thinking about branch names

2014-09-26 Thread Josh Elser

Yes, I will do so. Thanks for your feedback everyone. I'll try to update the 
documentation as well.

Christopher wrote:

I see lots of +1s on this thread, and no -1s. There seems to be a lot of
consensus. Josh, do you want to go ahead and make this change?


--
Christopher L Tubbs II
http://gravatar.com/ctubbsii

On Wed, Sep 24, 2014 at 1:26 AM, Josh Elser  wrote:


Good point, Christopher. I didn't really consider projects outside of the
Hadoop ecosystem. As long as we're cognizant (if our versioning strings do
get "better" moving forward), I think this shouldn't be an issue. Hold me
honest :)


Christopher wrote:


Another point to consider here is that many projects (such as guava) omit
".0" suffixes on versions (releasing, for instance 11, followed by 11.0.1
and 11.0.2 for bugfixes).

It's probably not a big deal. It's only a slight risk of confusion, and
SCM
is not for users, it's for devs, so I'm fine with the succinctness, as
long
as we don't ever create tags with the same names.


--
Christopher L Tubbs II
http://gravatar.com/ctubbsii

On Tue, Sep 23, 2014 at 11:45 AM, Josh Elser
wrote:

  Personally, I like the succinctness of "1.5" over the ones you

presented. I don't feel like "1.5.x" or "1.5-dev" tell me anything
more than "1.5" already did so they just turn into more typing. I
don't really think there's a high chance that we ever abandon x.y.z
version strings, so there isn't a big chance for it to look like a
release.

For context, Hadoop (and other related projects) tend to do a
"branch-X" and "branch-X.Y". For the same reasons as above, I feel
like the "branch-" is unnecessary.

Is anyone else concerned about potential confusion having "x.y" branch
names?

On Tue, Sep 23, 2014 at 9:04 AM, Christopher
wrote:


+1 to static dev branch names per release series. (this would also fix


the


Jenkins spam when the builds break due to branch name changes)

However, I kind of prefer 1.5.x or 1.5-dev, or similar, over simply 1.5,
which looks so much like a release version that I wouldn't want it to
generate any confusion.

Also, for reference, here's a few git commands that might help some


people


avoid the situation that happened:
git remote update
git remote prune $(git remote)
git config --global push.default current # git<   1.8
git config --global push.default simple # git>= 1.8

The situation seems to primarily have occurred because of some pushes


that


succeeded because the local clone was not aware that the remote branches
had disappeared. Pruning will clean those up, so that you'll get an
error
if you try to push. Simple/current push strategy will ensure you don't


push


all matching branches by default. Josh's proposed solution makes it less
likely the branches will disappear/change on a remote, but these are


still


useful git commands to be aware of, and are related enough to this
situation, I thought I'd share.



--
Christopher L Tubbs II
http://gravatar.com/ctubbsii

On Mon, Sep 22, 2014 at 11:18 PM, Josh Elser


wrote:


After working on 1.5.2 and today's branch snafu, I think I've come to
the
conclusion that our branch naming is more pain than it's worth (I
believe I
was the one who primarily argued for branch names as they are current

implemented, so take that as you want).

* Trying to making a new branch for the "next" version as a release is
happening forces you to fight with Maven. Maven expects that your


"next" is
going to be on the same branch and the way it makes commits and bumps

versions for you encourages this. Using a new branch for "next" is more
manual work for the release manager.

* The time after we make a release, there's a bit of confusion (I do it
too, just not publicly... yet) about "what branch do I put this fix for
_version_ in?". It's not uncommon to put it in the "old" branch instead


of
the new one. The problem arises when the old branch has already been

deleted. If a developer has an old version of that branch, there's


nothing
to tell them "hey, your copy of this branch is behind the remote's copy
of
this branch. I'm not accepting your push!" Having a single branch for a

release line removes this hassle.

"Pictorially", I'm thinking we would change from the active branches
{1.5.3-SNAPSHOT, 1.6.1-SNAPSHOT, 1.6.2-SNAPSHOT, master} to {1.5, 1.6,
master}. (where a git tag would exist for the 1.6.1 RCs).

IIRC, the big argument for per-release branches was of encouraging
frequent, targeted branches (I know the changes for this version go in


this
branch). I think most of this can be mitigated by keeping up with
frequent
releases and coordination with the individual cutting the release.

In short, I'm of the opinion that I think we should drop the


".z-SNAPSHOT"
suffix from branch names (e.g. 1.5.3-SNAPSHOT) and move to a shorter
"x.y"
(e.g. 1.5) that exists for the lifetime of that version. I think we
could
also use this approach if/when we change our versioning to start using
the
"x" component of "x.y.z".

Thoughts?

- Josh