Browse Source

Throw formal CheckoutConflictException on hard reset

This will allow calling classes to have access to the
conflicts that occurred during the attempted checkout.

Even though setFailOnConflict(false) is called on the
DirCacheCheckout a CheckoutConflictException can still
be thrown if cleanup fails.

Change-Id: Iea7ad3176a1b0e8606a643de8945e276718eb3ce
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
stable-2.0
Kevin Sawicki 13 years ago committed by Matthias Sohn
parent
commit
108e2bc6e4
  1. 13
      org.eclipse.jgit/src/org/eclipse/jgit/api/ResetCommand.java

13
org.eclipse.jgit/src/org/eclipse/jgit/api/ResetCommand.java

@ -47,6 +47,7 @@ import java.text.MessageFormat;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import org.eclipse.jgit.api.errors.CheckoutConflictException;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.JGitInternalException; import org.eclipse.jgit.api.errors.JGitInternalException;
import org.eclipse.jgit.dircache.DirCache; import org.eclipse.jgit.dircache.DirCache;
@ -136,7 +137,7 @@ public class ResetCommand extends GitCommand<Ref> {
* *
* @return the Ref after reset * @return the Ref after reset
*/ */
public Ref call() throws GitAPIException { public Ref call() throws GitAPIException, CheckoutConflictException {
checkCallable(); checkCallable();
Ref r; Ref r;
@ -366,13 +367,19 @@ public class ResetCommand extends GitCommand<Ref> {
} }
} }
private void checkoutIndex(RevCommit commit) throws IOException { private void checkoutIndex(RevCommit commit) throws IOException,
GitAPIException {
DirCache dc = repo.lockDirCache(); DirCache dc = repo.lockDirCache();
try { try {
DirCacheCheckout checkout = new DirCacheCheckout(repo, dc, DirCacheCheckout checkout = new DirCacheCheckout(repo, dc,
commit.getTree()); commit.getTree());
checkout.setFailOnConflict(false); checkout.setFailOnConflict(false);
checkout.checkout(); try {
checkout.checkout();
} catch (org.eclipse.jgit.errors.CheckoutConflictException cce) {
throw new CheckoutConflictException(checkout.getConflicts(),
cce);
}
} finally { } finally {
dc.unlock(); dc.unlock();
} }

Loading…
Cancel
Save