Browse Source

Merge "MergeCommand should create missing branches"

stable-0.11
Chris Aniszczyk 14 years ago committed by Code Review
parent
commit
9b8ac0151e
  1. 27
      org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java

27
org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java

@ -131,7 +131,6 @@ public class MergeCommand extends GitCommand<MergeResult> {
// Check for FAST_FORWARD, ALREADY_UP_TO_DATE
revWalk = new RevWalk(repo);
RevCommit headCommit = revWalk.lookupCommit(head.getObjectId());
// we know for now there is only one commit
Ref ref = commits.get(0);
@ -144,6 +143,30 @@ public class MergeCommand extends GitCommand<MergeResult> {
objectId = ref.getObjectId();
RevCommit srcCommit = revWalk.lookupCommit(objectId);
ObjectId headId = head.getObjectId();
if (headId == null) {
revWalk.parseHeaders(srcCommit);
DirCacheCheckout dco = new DirCacheCheckout(repo,
repo.lockDirCache(), srcCommit.getTree());
dco.setFailOnConflict(true);
dco.checkout();
RefUpdate refUpdate = repo
.updateRef(head.getTarget().getName());
refUpdate.setNewObjectId(objectId);
refUpdate.setExpectedOldObjectId(null);
refUpdate.setRefLogMessage("initial pull", false);
if (refUpdate.update() != Result.NEW)
throw new NoHeadException(
JGitText.get().commitOnRepoWithoutHEADCurrentlyNotSupported);
setCallable(false);
return new MergeResult(srcCommit, srcCommit, new ObjectId[] {
null, srcCommit }, MergeStatus.FAST_FORWARD,
mergeStrategy, null, null);
}
RevCommit headCommit = revWalk.lookupCommit(headId);
if (revWalk.isMergedInto(srcCommit, headCommit)) {
setCallable(false);
return new MergeResult(headCommit, srcCommit, new ObjectId[] {
@ -159,7 +182,7 @@ public class MergeCommand extends GitCommand<MergeResult> {
dco.setFailOnConflict(true);
dco.checkout();
updateHead(refLogMessage, srcCommit, head.getObjectId());
updateHead(refLogMessage, srcCommit, headId);
setCallable(false);
return new MergeResult(srcCommit, srcCommit, new ObjectId[] {
headCommit, srcCommit }, MergeStatus.FAST_FORWARD,

Loading…
Cancel
Save