How to retrieve the git branch name that was built by Jenkins when using inverse branch selection strategy?

branch, git, inverse, jenkins, plugins

Solution

Because git never checks out a branch just a commit directly you have to do the following:

To get the sha of the checked out commit:

git rev-parse HEAD

To get the all branches that commit is under:

git branch -a --contains SHA

The out put of the second command could look like this

master
remotes/origin/HEAD -> origin/master
remotes/origin/develop

Problem

We have one Jenkins job which builds every branch except master when there are new commits. This behavior can be configured via git plugin's 'choosing strategy:inverse' so that it listens to every branch except a specified branch. This functions very nicely. But the problem is that GIT_BRANCH environment variable always refers to the excluded branch('origin/master' in our case). How to query the actual branch that was built by Jenkins? Currently I am using a workaround that I grep it from generated changelog.xml. But it happens sometimes that changelog.xml is empty when Jenkins switches between different branches and I cannot find this info. What is the correct way of retrieving/querying from Jenkins the branch that was actually built?

Original source

Related problems