RevCommit developCommit = GitHelper.getLatestCommit(git, gfConfig.getDevelop());
RevCommit featureCommit = GitHelper.getLatestCommit(git, prefixedBranchName);
List<RevCommit> commitList = IterableHelper.asList(git.log().setMaxCount(2).addRange(developCommit, featureCommit).call());
MergeResult mergeResult = null;
if (commitList.size() < 2)
{
mergeResult = git.merge().setFastForward(MergeCommand.FastForwardMode.FF).include(featureBranch).call();
if(mergeResult.getMergeStatus().isSuccessful())
{
git.commit().setMessage("merging " + prefixedBranchName + "' into develop").call();
}
}
else
{
if (squash)
{
mergeResult = git.merge().setSquash(true).include(featureBranch).call();
if(mergeResult.getMergeStatus().isSuccessful())
{
git.commit().setMessage("squashing " + prefixedBranchName + "' into develop").call();
}
this.forceDeleteBranch = true;
}
else
{
mergeResult = git.merge().setFastForward(MergeCommand.FastForwardMode.NO_FF).include(featureBranch).call();
if(mergeResult.getMergeStatus().isSuccessful())
{
git.commit().setMessage("merging " + prefixedBranchName + "' into develop").call();
}
}
}
if (null == mergeResult || mergeResult.getMergeStatus().equals(MergeResult.MergeStatus.FAILED) || mergeResult.getMergeStatus().equals(MergeResult.MergeStatus.CONFLICTING))
{
FileHelper.createParentDirs(mergeBase);
FileUtils.createNewFile(mergeBase);
FileHelper.writeStringToFile(gfConfig.getDevelop(), mergeBase);
reporter.endCommand();