diff options
author | Robin Stocker <robin@nibor.org> | 2012-10-07 17:13:18 +0200 |
---|---|---|
committer | Robin Stocker <robin@nibor.org> | 2012-10-08 00:31:26 +0200 |
commit | c96b40d5921d68edb96afad38b9c171388af4e05 (patch) | |
tree | 2d5e915466da59425d8d1ca3856d00f0005dc596 | |
parent | 6da9473fe363c6419d35f5d0af49fef98ad1a0bc (diff) | |
download | jgit-c96b40d5921d68edb96afad38b9c171388af4e05.tar.gz jgit-c96b40d5921d68edb96afad38b9c171388af4e05.zip |
CommitCommand: Don't allow amending on initial commit
Change-Id: I27b13510eb6756da21d0d359d76031da4a875e28
4 files changed, 13 insertions, 0 deletions
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 44f1a48c31..3729387f32 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 8a288cd070..2e974d6252 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 ae6d62963e..87c282d110 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<RevCommit> { // 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 d70481450c..0c0ece7d10 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; |