Matt, yes, thank you.

This is *exactly* what we encountered, too.  Branching *is* an expression
of versioning; you have to reflect that in your pom, though, if some build
system is building all these various branches and pushing these artifacts
somewhere central.  I referred to this problem in previous post as the
'latest-branch-to-build-wins' problem.

This is why I want to do <version>$branch-SNAPSHOT</version> or some such;
if I can *declare* that, then I *know* the risk of failure is much less. I
want to trust maven to resolving this variable, not the user.

And as I'm sure you found out, tracking these sorts of issues are really
really hard, and cause real head scratching moments. It's much harder when
the versions are different only by a day; nothing hugely different stands
out to make you think... Oh my gosh I'm somehow using a very old build!

A minor epiphany: a build-number is versioning for build servers, and
branches are versioning for developers!
Seth



On Wed, Mar 7, 2012 at 2:57 PM, walshmatt [via Maven] <
ml-node+s40175n5545537...@n5.nabble.com> wrote:

> Just a little anecdote here on the pitfalls of branching maven projects
> without some kind of control.
>
> We have a SNAPSHOT version for trunk. We use the maven-release-plugin to
> create our maintenance branches at release time. The plugin, by default,
> uses the current dev version on trunk as the branch version, and prompts
> for a new trunk version. Perfect. That's exactly what we want.
>
> A developer cut a dev branch from trunk several months ago, just using
> the normal svn copy, and didn't think about changing the version. He
> also created a Jenkins project for it. The dev branch sat untouched for
> a couple of months, then a checkin triggered a new build. Later, we were
> scratching our heads as to why another build dependent the trunk version
> of that same artifact was failing. Turns out it was using the artifact
> built from old code on the dev branch.
>
> After some investigation, the developer was able to pinpoint the code,
> which pointed to the maven artifact causing the problem.
> We put the branch and revision from the buildnumber-maven-plugin into
> the manifest, so we could see the artifact in question was built from
> this rarely touched dev branch. From that we were able to track the
> issue to the Jenkins build.
>
> A reason to control branch versions. An argument to use project-specific
> local repositories in Jenkins (see the "Maven concurrent builds" thread
> from earlier today). A good use of the manifest. And possibly even an
> argument in support of what you are looking for.
>
> Matt
>
> > -----Original Message-----
> > From: Seth Call [mailto:[hidden 
> > email]<http://user/SendEmail.jtp?type=node&node=5545537&i=0>]
>
> > Sent: Wednesday, March 07, 2012 12:41 PM
> > To: [hidden email]<http://user/SendEmail.jtp?type=node&node=5545537&i=1>
> > Subject: Re: Is it possible to tie current git branch to project
> > version?
> >
> > Hi Matt,
> >
> > Thanks for the pointer to the release plugin.  My desire is to not
> > control
> > the process of making branches or changing versions through plugins.
> I
> > want developers to be able to use git for things branch related, and
> > use
> > maven for compile/build related.
> >
> > I think the release-plugin is trying to do too much (unless of course
> > you
> > want maven to do *everything* :) )  Regardless of my opinion, though,
> > you
> > are a big help.  I'll still try to find the route I'm trying to
> take...
>
> >
> > Seth
> >
> > On Wed, Mar 7, 2012 at 10:03 AM, walshmatt [via Maven] <
> > [hidden email] <http://user/SendEmail.jtp?type=node&node=5545537&i=2>>
> wrote:
> >
> > > Seth.
> > >
> > > I tried doing something similar to this using the
> > > buildnumber-maven-plugin. It returns the branch and revision number
> > (I
> > > use Subversion, not Git), but looks like you're trying something
> > > similar.
> > >
> > > The problem I encountered (at least how I interpreted it) is that
> the
> > > plugin doesn't run soon enough - the pom has already been
> interpreted
> > > before the plugin is called, so the ${branch} wasn't resolved when I
> > > needed it. I wasn't trying to change the version, but I was trying
> to
> > > use the property somewhere else. I think you'd have the same issue
> > with
> > > version though.
> > >
> > > You can use the maven-release-plugin to create your branch. It
> > prompts
> > > for a new version and updates and commits your poms automatically
> (at
>
> > > least for SVN). When/if you merge your changes back to the master
> > > branch, you'd probably need to update your versions again, but that
> > can
> > > be accomplished with the versions plugin.
> > >
> > > HTH,
> > > Matt
> > >
> > > > -----Original Message-----
> > > > From: Seth Call [mailto:[hidden
> > email]<http://user/SendEmail.jtp?type=node&node=5544568&i=0>]
> > >
> > > > Sent: Wednesday, March 07, 2012 8:19 AM
> > > > To: [hidden
> > email]<http://user/SendEmail.jtp?type=node&node=5544568&i=1>
> > > > Subject: Re: Is it possible to tie current git branch to project
> > > > version?
> > > >
> > > > Hi Roy,
> > > >
> > > > I don't understand what 'tagging our repo' means.  Is this a
> > feature
> > > of
> > >
> > > > your remote repository?  Sorry... I googled but I don't know what
> > you
> > > > are
> > > > saying...
> > > >
> > > > But aside from that, I really don't care about git hash in this
> > > > question...
> > > > let me explain what I'm trying to acheive...
> > > >
> > > >
> > > >
> > > > As a developer:
> > > > * If I'm on branch master, I want my project version to be master-
> > > > SNAPSHOT
> > > >
> > > > * If I'm on branch development, I want my project version to be
> > > > development-SNAPSHOT
> > > >
> > > > I'd like that to happen automatically when I make the branch; I
> > know
> > > > this
> > > > is rather dynamic so I assume a plugin at a minimum is required.
> > I'm
> > > > also
> > > > not interested in using git local hooks if at all avoidable
> because
> > > > they
> > > > have their own drawbacks.
> > > >
> > > > This versioning scheme is very important; making a branch is
> making
> > a
> > > > new
> > > > version.  So, downstream projects that depend on my
> project:master-
> > > > SNAPSHOT
> > > > should *not* pickup my new branch's build artifact-not unless, of
> > > > course, I
> > > > go to that downstream project and change it's dependency version
> to
>
> > > say
> > > > project:development-SNAPSHOT.
> > > >
> > > > In summary, they are different versions, and so if you don't
> > version
> > > > your
> > > > project as you make a branch, then you will now have indeterminate
> > > > build
> > > > resolution because 'the-last-branch-you-build-will-win' sort of
> > > > problems.
> > > >  Also, all of this should work locally (not require a build
> > server),
> > > so
> > >
> > > > I'm
> > > > limiting myself to maven-only techniques...
> > > >
> > > > Any help is greatly appreciated.  I hope there is some way to
> > achieve
> > > > this
> > > > that I'm just not thinking of...
> > > >
> > > > But if anyone can say definitively that you can not put a variable
> > in
> > > > the
> > > > <version> tag of an artifact, then I at least know a plugin-based
> > > > solution
> > > > is not an option.
> > > >
> > > > Regards,
> > > > Seth
> > > >
> > > > On Wed, Mar 7, 2012 at 6:00 AM, Lyons, Roy [via Maven] <
> > > > [hidden email]
> > <http://user/SendEmail.jtp?type=node&node=5544568&i=2>>
> > > wrote:
> > > >
> > > > > :-) we tag our repo with "branchname!RP-BL-mavenlabel" to help
> in
>
> > > > > location.  Rp is for release prepare and bl is for baseline
> > > > (carryover from
> > > > > clearcase terminology)
> > > > >
> > > > > Just remember that in git a hash doesn't belong to a branch, it
> > is
> > > > simply
> > > > > attached to a linked list of hashes.  A "branch" is simply a tag
> > > > pointing
> > > > > to a hash being designated as a "head".  You can just as easily
> > use
> > > > the tag
> > > > > created by the release plugin to checkout, and then make some
> > bugfix
> > > > branch
> > > > > from that location.
> > > > >
> > > > >
> > > > > Sent from my Blackberry.
> > > > >
> > > > > ----- Original Message -----
> > > > > From: Seth Call <[hidden
> > > > email]<http://user/SendEmail.jtp?type=node&node=5543915&i=0>>
> > > > >
> > > > > To: [hidden email]
> > > > <http://user/SendEmail.jtp?type=node&node=5543915&i=1><[hidden
> > > > > email] <http://user/SendEmail.jtp?type=node&node=5543915&i=2>>
> > > > > Sent: Tue Mar 06 22:01:07 2012
> > > > > Subject: Is it possible to tie current git branch to project
> > > version?
> > >
> > > > >
> > > > > Hi there,
> > > > >
> > > > > I've seen indication when searching the internet that it isn't
> > > > possible to
> > > > > put variables in <version> of a project (unless those variables
> > are
> > > > > hardcoded <properties> or provided at the command line), but I
> > > > thought I'd
> > > > > ask the list ...
> > > > >
> > > > > Say there was a plugin that would invoke 'git branch' to
> > determine
> > > > the
> > > > > current branch, and to then make that available to the project
> as
> > a
> > > > > variable; call it ${branch}.   I'd like to use this variable
> then
>
> > in
> > > > the
> > > > > version tag:
> > > > >
> > > > > <project>
> > > > > <groupId>blah</groupId>
> > > > > <artifactId>blah</artifactId>
> > > > > <version>${branch}-SNAPSHOT</version>
> > > > > </project>
> > > > >
> > > > > The reason I want to do this is that I'm realizing, for our
> > > internal-
> > > > only
> > > > > code projects, that a branch is always synonymous with a version
> > of
> > > a
> > >
> > > > > project, and ideally the act of being of switching branches
> would
>
> > be
> > > > all
> > > > > it
> > > > > takes to switch your maven project's version.
> > > > >
> > > > > Is this possible if I were to make a maven plugin?
> > > > >
> > > > > Thanks!
> > > > > Seth
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > View this message in context:
> > > > > http://maven.40175.n5.nabble.com/Is-it-possible-to-tie-current-
> > git-
> > > > branch-to-project-version-tp5543110p5543110.html
> > > > > Sent from the Maven - Users mailing list archive at Nabble.com.
> > > > >
> > > > >
> > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [hidden
> > > > email]<http://user/SendEmail.jtp?type=node&node=5543915&i=3>
> > > > > For additional commands, e-mail: [hidden
> > > > email]<http://user/SendEmail.jtp?type=node&node=5543915&i=4>
> > > > >
> > > > >
> > > > >
> > >
> ---------------------------------------------------------------------
>
> > >
> > > > > To unsubscribe, e-mail: [hidden
> > > > email]<http://user/SendEmail.jtp?type=node&node=5543915&i=5>
> > > > > For additional commands, e-mail: [hidden
> > > > email]<http://user/SendEmail.jtp?type=node&node=5543915&i=6>
> > > > >
> > > > >
> > > > > ------------------------------
> > > > >  If you reply to this email, your message will be added to the
> > > > discussion
> > > > > below:
> > > > >
> > > > > http://maven.40175.n5.nabble.com/Is-it-possible-to-tie-current-
> > git-
> > > > branch-to-project-version-tp5543110p5543915.html
> > > > >  To unsubscribe from Is it possible to tie current git branch to
> > > > project
> > > > > version?, click
> > > >
> > >
> >
> here<http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?macro=un
> > > >
> > >
> >
> subscribe_by_code&node=5543110&code=c2V0aGNhbGxAZ21haWwuY29tfDU1NDMxMTB
> > > > 8LTU5NTg4MjI5Nw==>
> > > > > .
> > > > >
> > > >
> > >
> >
> NAML<http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?macro=ma
> > > >
> > >
> >
> cro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.names
> > > > paces.BasicNamespace-nabble.view.web.template.NabbleNamespace-
> > > >
> > >
> >
> nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%2
>
> > >
> > > > 1nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-
> > > > send_instant_email%21nabble%3Aemail.naml>
> > > > >
> > > >
> > > >
> > > > --
> > > > View this message in context: http://maven.40175.n5.nabble.com/Is-
> > it-
> > > > possible-to-tie-current-git-branch-to-project-version-
> > > > tp5543110p5544417.html
> > > > Sent from the Maven - Users mailing list archive at Nabble.com.
> > >
> > >
> > ______________________________________________________________________
> > > This message, including any attachments, is confidential and
> contains
> > > information intended only for the person(s) named above. Any other
> > > distribution, copying or disclosure is strictly prohibited. If you
> > are not
> > > the intended recipient or have received this message in error,
> please
> > > notify us immediately by reply email and permanently delete the
> > original
> > > transmission from all of your systems and hard drives, including any
> > > attachments, without making a copy.
> > >
> > >
> ---------------------------------------------------------------------
>
> > > To unsubscribe, e-mail: [hidden
> > email]<http://user/SendEmail.jtp?type=node&node=5544568&i=3>
> > > For additional commands, e-mail: [hidden
> > email]<http://user/SendEmail.jtp?type=node&node=5544568&i=4>
> > >
> > >
> > >
> > > ------------------------------
> > >  If you reply to this email, your message will be added to the
> > discussion
> > > below:
> > >
> > > http://maven.40175.n5.nabble.com/Is-it-possible-to-tie-current-git-
> > branch-to-project-version-tp5543110p5544568.html
> > >  To unsubscribe from Is it possible to tie current git branch to
> > project
> > > version?, click
> >
> here<http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?macro=un
> >
> subscribe_by_code&node=5543110&code=c2V0aGNhbGxAZ21haWwuY29tfDU1NDMxMTB
> > 8LTU5NTg4MjI5Nw==>
> > > .
> > >
> >
> NAML<http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?macro=ma
> >
> cro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.names
> > paces.BasicNamespace-nabble.view.web.template.NabbleNamespace-
> >
> nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%2
>
> > 1nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-
> > send_instant_email%21nabble%3Aemail.naml>
> > >
> >
> >
> > --
> > View this message in context: http://maven.40175.n5.nabble.com/Is-it-
> > possible-to-tie-current-git-branch-to-project-version-
> > tp5543110p5545345.html
> > Sent from the Maven - Users mailing list archive at Nabble.com.
>
> ______________________________________________________________________
> This message, including any attachments, is confidential and contains
> information intended only for the person(s) named above. Any other
> distribution, copying or disclosure is strictly prohibited. If you are not
> the intended recipient or have received this message in error, please
> notify us immediately by reply email and permanently delete the original
> transmission from all of your systems and hard drives, including any
> attachments, without making a copy.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden 
> email]<http://user/SendEmail.jtp?type=node&node=5545537&i=3>
> For additional commands, e-mail: [hidden 
> email]<http://user/SendEmail.jtp?type=node&node=5545537&i=4>
>
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://maven.40175.n5.nabble.com/Is-it-possible-to-tie-current-git-branch-to-project-version-tp5543110p5545537.html
>  To unsubscribe from Is it possible to tie current git branch to project
> version?, click 
> here<http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5543110&code=c2V0aGNhbGxAZ21haWwuY29tfDU1NDMxMTB8LTU5NTg4MjI5Nw==>
> .
> NAML<http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>


--
View this message in context: 
http://maven.40175.n5.nabble.com/Is-it-possible-to-tie-current-git-branch-to-project-version-tp5543110p5545583.html
Sent from the Maven - Users mailing list archive at Nabble.com.

Reply via email to