try
{
if (fetch)
{
RefSpec spec = new RefSpec("+" + Constants.R_HEADS + gfConfig.getDevelop() + ":" + Constants.R_REMOTES + "origin/" + gfConfig.getDevelop());
FetchResult result = git.fetch().setRefSpecs(spec).call();
}
RevCommit startPoint = null;
if(null != startCommit)
{
startPoint = startCommit;
}
else if(!StringUtils.isEmptyOrNull(startCommitString))
{
startPoint = GitHelper.getCommitForString(git,startCommitString);
}
else
{
startPoint = GitHelper.getLatestCommit(git, gfConfig.getDevelop());
}
requireCommitOnBranch(startPoint,gfConfig.getDevelop());
requireTagAbsent(gfConfig.getPrefixValue(JGitFlowConstants.PREFIXES.VERSIONTAG.configKey()) + releaseName);
if (GitHelper.remoteBranchExists(git, gfConfig.getDevelop()))
{
requireLocalBranchNotBehindRemote(gfConfig.getDevelop());
}
Ref newBranch = git.checkout()
.setName(prefixedReleaseName)
.setCreateBranch(true)
.setStartPoint(startPoint)
.call();
if (push)
{
requireRemoteBranchAbsent(prefixedReleaseName);
RefSpec branchSpec = new RefSpec(prefixedReleaseName + ":" + Constants.R_HEADS + prefixedReleaseName);
git.push().setRemote("origin").setRefSpecs(branchSpec).call();
git.fetch().setRemote("origin").call();
//setup tracking
StoredConfig config = git.getRepository().getConfig();