Browse Source

CommitCommand: Don't allow amending on initial commit

Change-Id: I27b13510eb6756da21d0d359d76031da4a875e28
stable-2.2
Robin Stocker 12 years ago
parent
commit
c96b40d592
  1. 7
      org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitCommandTest.java
  2. 1
      org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
  3. 4
      org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java
  4. 1
      org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java

7
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();
}
}

1
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}

4
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)

1
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;

Loading…
Cancel
Save