diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitCommandTest.java index 44f1a48c3..3729387f3 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitCommandTest.java @@ -50,6 +50,7 @@ import static org.junit.Assert.assertTrue; import java.io.File; import java.util.List; +import org.eclipse.jgit.api.errors.WrongRepositoryStateException; import org.eclipse.jgit.diff.DiffEntry; import org.eclipse.jgit.dircache.DirCache; import org.eclipse.jgit.lib.ConfigConstants; @@ -420,4 +421,10 @@ public class CommitCommandTest extends RepositoryTestCase { assertEquals("commit: Squashed commit of the following:", db .getReflogReader(db.getBranch()).getLastEntry().getComment()); } + + @Test(expected = WrongRepositoryStateException.class) + public void commitAmendOnInitialShouldFail() throws Exception { + Git git = new Git(db); + git.commit().setAmend(true).setMessage("initial commit").call(); + } } diff --git a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties index 8a288cd07..2e974d625 100644 --- a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties +++ b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties @@ -86,6 +86,7 @@ commandWasCalledInTheWrongState=Command {0} was called in the wrong state commitAlreadyExists=exists {0} commitMessageNotSpecified=commit message not specified commitOnRepoWithoutHEADCurrentlyNotSupported=Commit on repo without HEAD currently not supported +commitAmendOnInitialNotPossible=Amending is not possible on initial commit. compressingObjects=Compressing objects connectionFailed=connection failed connectionTimeOut=Connection time out: {0} diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java index ae6d62963..87c282d11 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java @@ -176,6 +176,10 @@ public class CommitCommand extends GitCommand { // determine the current HEAD and the commit it is referring to ObjectId headId = repo.resolve(Constants.HEAD + "^{commit}"); + if (headId == null && amend) + throw new WrongRepositoryStateException( + JGitText.get().commitAmendOnInitialNotPossible); + if (headId != null) if (amend) { RevCommit previousCommit = new RevWalk(repo) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java index d70481450..0c0ece7d1 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java @@ -146,6 +146,7 @@ public class JGitText extends TranslationBundle { /***/ public String commitAlreadyExists; /***/ public String commitMessageNotSpecified; /***/ public String commitOnRepoWithoutHEADCurrentlyNotSupported; + /***/ public String commitAmendOnInitialNotPossible; /***/ public String compressingObjects; /***/ public String connectionFailed; /***/ public String connectionTimeOut;