From eb6093293022e468c2aea93a11f63b366e0d3891 Mon Sep 17 00:00:00 2001 From: Robin Rosenberg Date: Tue, 29 Jan 2013 08:05:00 +0100 Subject: [PATCH] Fix Check for FF_ONLY merges again Added more FF-mode tests Change-Id: I33eed5737d9411cc1cf214da62ce719916a1b736 --- .../eclipse/jgit/api/MergeCommandTest.java | 57 ++++++++++++------- .../org/eclipse/jgit/api/MergeCommand.java | 2 +- 2 files changed, 36 insertions(+), 23 deletions(-) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/MergeCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/MergeCommandTest.java index df3cf5842..f4e418def 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/MergeCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/MergeCommandTest.java @@ -204,28 +204,6 @@ public void testMultipleHeads() throws Exception { } } - @Test - public void testMergeCannotDoRequiredFastForward() throws Exception { - Git git = new Git(db); - - RevCommit first = git.commit().setMessage("first").call(); - createBranch(first, "refs/heads/side"); - - writeTrashFile("a", "a"); - git.add().addFilepattern("a").call(); - git.commit().setMessage("second").call(); - - checkoutBranch("refs/heads/side"); - writeTrashFile("b", "b"); - git.add().addFilepattern("b").call(); - git.commit().setMessage("third").call(); - - MergeResult result = git.merge().include(db.getRef(Constants.MASTER)) - .setFastForward(FastForwardMode.NO_FF) - .call(); - assertEquals(MergeStatus.ABORTED, result.getMergeStatus()); - } - @Theory public void testMergeSuccessAllStrategies(MergeStrategy mergeStrategy) throws Exception { @@ -1367,6 +1345,41 @@ public void testFastForwardOnly() throws Exception { assertEquals(MergeStatus.FAST_FORWARD, result.getMergeStatus()); } + @Test + public void testNoFastForward() throws Exception { + Git git = new Git(db); + RevCommit initialCommit = git.commit().setMessage("initial commit") + .call(); + createBranch(initialCommit, "refs/heads/branch1"); + git.commit().setMessage("second commit").call(); + checkoutBranch("refs/heads/branch1"); + + MergeCommand merge = git.merge(); + merge.setFastForward(FastForwardMode.NO_FF); + merge.include(db.getRef(Constants.MASTER)); + MergeResult result = merge.call(); + + assertEquals(MergeStatus.MERGED, result.getMergeStatus()); + } + + @Test + public void testFastForwardOnlyNotPossible() throws Exception { + Git git = new Git(db); + RevCommit initialCommit = git.commit().setMessage("initial commit") + .call(); + createBranch(initialCommit, "refs/heads/branch1"); + git.commit().setMessage("second commit").call(); + checkoutBranch("refs/heads/branch1"); + writeTrashFile("file1", "branch1"); + git.add().addFilepattern("file").call(); + git.commit().setMessage("second commit on branch1").call(); + MergeCommand merge = git.merge(); + merge.setFastForward(FastForwardMode.FF_ONLY); + merge.include(db.getRef(Constants.MASTER)); + MergeResult result = merge.call(); + + assertEquals(MergeStatus.ABORTED, result.getMergeStatus()); + } private static void setExecutable(Git git, String path, boolean executable) { FS.DETECTED.setExecute( new File(git.getRepository().getWorkTree(), path), executable); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java index aacc970e5..6eba35e1d 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java @@ -300,7 +300,7 @@ public MergeResult call() throws GitAPIException, NoHeadException, headCommit, srcCommit }, mergeStatus, mergeStrategy, null, msg); } else { - if (fastForwardMode == FastForwardMode.NO_FF) { + if (fastForwardMode == FastForwardMode.FF_ONLY) { return new MergeResult(headCommit, srcCommit, new ObjectId[] { headCommit, srcCommit }, MergeStatus.ABORTED, mergeStrategy, null, null);