Merge "Add toString for TrackingRefUpdate"
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/FileSender.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/FileSender.java
index 731b4ca..91e749e 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/FileSender.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/FileSender.java
@@ -220,7 +220,6 @@ private boolean initRangeRequest(final HttpServletRequest req,
return true;
}
- @SuppressWarnings("unchecked")
private static Enumeration<String> getRange(final HttpServletRequest req) {
return req.getHeaders(HDR_RANGE);
}
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java
index eee98d4..8c769e6 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java
@@ -87,7 +87,7 @@ protected void run() throws Exception {
switch (result.getMergeStatus()) {
case ALREADY_UP_TO_DATE:
- out.println(CLIText.get().alreadyUpToDate);
+ outw.println(CLIText.get().alreadyUpToDate);
break;
case FAST_FORWARD:
outw.println(result.getMergeStatus().toString());
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Push.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Push.java
index 2c10cf9..534e6de 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Push.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Push.java
@@ -252,7 +252,7 @@ private String safeAbbreviate(ObjectReader reader, ObjectId id) {
private void printUpdateLine(final char flag, final String summary,
final String srcRef, final String destRef, final String message)
throws IOException {
- out.format(" %c %-17s", valueOf(flag), summary);
+ outw.format(" %c %-17s", valueOf(flag), summary);
if (srcRef != null)
outw.format(" %s ->", abbreviateRef(srcRef, true));
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java
index 64e3859..6abbfb0 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java
@@ -43,6 +43,7 @@
package org.eclipse.jgit.pgm;
+import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
@@ -69,10 +70,10 @@ protected void run() throws Exception {
boolean firstHeader = true;
if (head != null && head.isSymbolic()) {
String branch = Repository.shortenRefName(head.getLeaf().getName());
- out.println(CLIText.formatLine(
+ outw.println(CLIText.formatLine(
MessageFormat.format(CLIText.get().onBranch, branch)));
} else
- out.println(CLIText.formatLine(CLIText.get().notOnAnyBranch));
+ outw.println(CLIText.formatLine(CLIText.get().notOnAnyBranch));
// List changes
org.eclipse.jgit.api.Status status = new Git(db).status().call();
Collection<String> added = status.getAdded();
@@ -122,22 +123,24 @@ protected void run() throws Exception {
}
}
- protected void printSectionHeader(String pattern, Object... arguments) {
- out.println(CLIText.formatLine(MessageFormat.format(pattern, arguments)));
+ protected void printSectionHeader(String pattern, Object... arguments)
+ throws IOException {
+ outw.println(CLIText.formatLine(MessageFormat
+ .format(pattern, arguments)));
if (!pattern.equals(""))
- out.println(CLIText.formatLine(""));
- out.flush();
+ outw.println(CLIText.formatLine(""));
+ outw.flush();
}
- protected int printList(Collection<String> list) {
+ protected int printList(Collection<String> list) throws IOException {
if (!list.isEmpty()) {
List<String> sortedList = new ArrayList<String>(list);
java.util.Collections.sort(sortedList);
for (String filename : sortedList) {
- out.println(CLIText.formatLine(String.format(
+ outw.println(CLIText.formatLine(String.format(
statusFileListFormat, filename)));
}
- out.flush();
+ outw.flush();
return list.size();
} else
return 0;
@@ -146,7 +149,8 @@ protected int printList(Collection<String> list) {
protected int printList(String status1, String status2, String status3,
Collection<String> list, Collection<String> set1,
Collection<String> set2,
- @SuppressWarnings("unused") Collection<String> set3) {
+ @SuppressWarnings("unused") Collection<String> set3)
+ throws IOException {
List<String> sortedList = new ArrayList<String>(list);
java.util.Collections.sort(sortedList);
for (String filename : sortedList) {
@@ -158,9 +162,9 @@ else if (set2.contains(filename))
else
// if (set3.contains(filename))
prefix = status3;
- out.println(CLIText.formatLine(String.format(
+ outw.println(CLIText.formatLine(String.format(
statusFileListFormatWithPrefix, prefix, filename)));
- out.flush();
+ outw.flush();
}
return list.size();
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PathCheckoutCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PathCheckoutCommandTest.java
index 243d791..d37f572 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PathCheckoutCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PathCheckoutCommandTest.java
@@ -47,11 +47,13 @@
import java.io.File;
import java.io.IOException;
+import org.eclipse.jgit.api.errors.JGitInternalException;
import org.eclipse.jgit.dircache.DirCache;
import org.eclipse.jgit.dircache.DirCacheEntry;
import org.eclipse.jgit.errors.NoWorkTreeException;
import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.lib.ObjectReader;
+import org.eclipse.jgit.lib.RepositoryState;
import org.eclipse.jgit.lib.RepositoryTestCase;
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.revwalk.RevCommit;
@@ -243,4 +245,23 @@ public void testCheckoutRepository() throws Exception {
assertEquals("1", read(test));
assertEquals("a", read(test2));
}
+
+ @Test(expected = JGitInternalException.class)
+ public void testCheckoutOfConflictingFileShouldThrow()
+ throws Exception {
+ // Setup
+ git.checkout().setCreateBranch(true).setName("conflict")
+ .setStartPoint(initialCommit).call();
+ writeTrashFile(FILE1, "Conflicting");
+ RevCommit conflict = git.commit().setAll(true)
+ .setMessage("Conflicting change").call();
+
+ git.checkout().setName("master").call();
+
+ git.merge().include(conflict).call();
+ assertEquals(RepositoryState.MERGING, db.getRepositoryState());
+
+ // Now check out the conflicting path
+ git.checkout().addPath(FILE1).call();
+ }
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ReflogResolveTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ReflogResolveTest.java
index fe28b47..80cd163 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ReflogResolveTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ReflogResolveTest.java
@@ -152,6 +152,7 @@ public void resolvePreviousBranch() throws Exception {
db.resolve("@{-1}@{0}");
fail();
} catch (RevisionSyntaxException e) {
+ // good
}
assertEquals(c1.getName(), db.resolve("@{-2}@{0}").getName());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java
index d8efbe7..57f47a4 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java
@@ -64,6 +64,7 @@
import org.eclipse.jgit.dircache.DirCacheEntry;
import org.eclipse.jgit.dircache.DirCacheIterator;
import org.eclipse.jgit.errors.AmbiguousObjectException;
+import org.eclipse.jgit.errors.UnmergedPathException;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.lib.AnyObjectId;
import org.eclipse.jgit.lib.Constants;
@@ -284,7 +285,8 @@ protected CheckoutCommand checkoutPaths() throws IOException,
startWalk.setRecursive(true);
if (!checkoutAllPaths)
startWalk.setFilter(PathFilterGroup.createFromStrings(paths));
- boolean checkoutIndex = startCommit == null && startPoint == null;
+ final boolean checkoutIndex = startCommit == null
+ && startPoint == null;
if (!checkoutIndex)
startWalk.addTree(revWalk.parseCommit(getStartPoint())
.getTree());
@@ -299,6 +301,11 @@ protected CheckoutCommand checkoutPaths() throws IOException,
final FileMode mode = startWalk.getFileMode(0);
editor.add(new PathEdit(startWalk.getPathString()) {
public void apply(DirCacheEntry ent) {
+ if (checkoutIndex
+ && ent.getStage() > DirCacheEntry.STAGE_0) {
+ UnmergedPathException e = new UnmergedPathException(ent);
+ throw new JGitInternalException(e.getMessage(), e);
+ }
ent.setObjectId(blobId);
ent.setFileMode(mode);
File file = new File(workTree, ent.getPathString());