summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2011-12-10 01:06:47 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2011-12-10 01:06:47 +0100
commite11af568285525f4d16bbefef5faae5fea2ef008 (patch)
tree5ea72631970da7889606bfa72e74a78b75172687
parentd1dd3403ac6064eaa8c11c6954b41a51a7b11bb6 (diff)
parentc1f352c100278551a7a144b756983ed8a5990c41 (diff)
downloadjgit-e11af568285525f4d16bbefef5faae5fea2ef008.tar.gz
jgit-e11af568285525f4d16bbefef5faae5fea2ef008.zip
Merge branch 'stable-1.2'
* stable-1.2: Fix version.sh Throw API exception when MergeCommand hits checkout conflicts Add methods for configuring platform emulation Fix history rendering not to occupy too many lanes Fix History rendering Change-Id: If71cc760423ae2b76c7435ca4830edc1745556de Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
-rw-r--r--org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java30
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java12
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/errors/CheckoutConflictException.java15
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java2
-rwxr-xr-xtools/version.sh2
5 files changed, 57 insertions, 4 deletions
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java
index b9bc25857a..ae1c5d9fe8 100644
--- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java
+++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/MockSystemReader.java
@@ -150,4 +150,34 @@ public class MockSystemReader extends SystemReader {
public Locale getLocale() {
return Locale.US;
}
+
+ /**
+ * Assign some properties for the currently executing platform
+ */
+ public void setCurrentPlatform() {
+ setProperty("os.name", System.getProperty("os.name"));
+ setProperty("file.separator", System.getProperty("file.separator"));
+ setProperty("path.separator", System.getProperty("path.separator"));
+ setProperty("line.separator", System.getProperty("line.separator"));
+ }
+
+ /**
+ * Emulate Windows
+ */
+ public void setWindows() {
+ setProperty("os.name", "Windows");
+ setProperty("file.separator", "\\");
+ setProperty("path.separator", ";");
+ setProperty("line.separator", "\r\n");
+ }
+
+ /**
+ * Emulate Unix
+ */
+ public void setUnix() {
+ setProperty("os.name", "*nix"); // Essentially anything but Windows
+ setProperty("file.separator", "/");
+ setProperty("path.separator", ":");
+ setProperty("line.separator", "\n");
+ }
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java
index c7a30ebe17..85686da4de 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java
@@ -46,6 +46,7 @@ package org.eclipse.jgit.api;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.Arrays;
+import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -122,6 +123,7 @@ public class MergeCommand extends GitCommand<MergeResult> {
Integer.valueOf(commits.size())));
RevWalk revWalk = null;
+ DirCacheCheckout dco = null;
try {
Ref head = repo.getRef(Constants.HEAD);
if (head == null)
@@ -147,7 +149,7 @@ public class MergeCommand extends GitCommand<MergeResult> {
ObjectId headId = head.getObjectId();
if (headId == null) {
revWalk.parseHeaders(srcCommit);
- DirCacheCheckout dco = new DirCacheCheckout(repo,
+ dco = new DirCacheCheckout(repo,
repo.lockDirCache(), srcCommit.getTree());
dco.setFailOnConflict(true);
dco.checkout();
@@ -176,7 +178,7 @@ public class MergeCommand extends GitCommand<MergeResult> {
// FAST_FORWARD detected: skip doing a real merge but only
// update HEAD
refLogMessage.append(": " + MergeStatus.FAST_FORWARD);
- DirCacheCheckout dco = new DirCacheCheckout(repo,
+ dco = new DirCacheCheckout(repo,
headCommit.getTree(), repo.lockDirCache(),
srcCommit.getTree());
dco.setFailOnConflict(true);
@@ -214,7 +216,7 @@ public class MergeCommand extends GitCommand<MergeResult> {
refLogMessage.append(mergeStrategy.getName());
refLogMessage.append('.');
if (noProblems) {
- DirCacheCheckout dco = new DirCacheCheckout(repo,
+ dco = new DirCacheCheckout(repo,
headCommit.getTree(), repo.lockDirCache(),
merger.getResultTreeId());
dco.setFailOnConflict(true);
@@ -250,6 +252,10 @@ public class MergeCommand extends GitCommand<MergeResult> {
}
}
}
+ } catch (org.eclipse.jgit.errors.CheckoutConflictException e) {
+ List<String> conflicts = (dco == null) ? Collections
+ .<String> emptyList() : dco.getConflicts();
+ throw new CheckoutConflictException(conflicts, e);
} catch (IOException e) {
throw new JGitInternalException(
MessageFormat.format(
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/errors/CheckoutConflictException.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/errors/CheckoutConflictException.java
index de45c1d8e2..4d5bd1e03c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/errors/CheckoutConflictException.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/errors/CheckoutConflictException.java
@@ -48,6 +48,20 @@ public class CheckoutConflictException extends GitAPIException {
private static final long serialVersionUID = 1L;
private List<String> conflictingPaths;
+ /**
+ * Translate internal exception to API exception
+ *
+ * @param conflictingPaths
+ * list of conflicting paths
+ *
+ * @param e
+ */
+ public CheckoutConflictException(List<String> conflictingPaths,
+ org.eclipse.jgit.errors.CheckoutConflictException e) {
+ super(e.getMessage(), e);
+ this.conflictingPaths = conflictingPaths;
+ }
+
CheckoutConflictException(String message, Throwable cause) {
super(message, cause);
}
@@ -73,6 +87,7 @@ public class CheckoutConflictException extends GitAPIException {
/**
* Adds a new conflicting path
+ *
* @param conflictingPath
* @return {@code this}
*/
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java b/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java
index e8263c5a93..f66e5e7ef9 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java
@@ -232,7 +232,9 @@ public class PlotCommitList<L extends PlotLane> extends
if (newPos == -1)
newPos = positionsAllocated++;
freePositions.add(commit.lane.getPosition());
+ activeLanes.remove(commit.lane);
commit.lane.position = newPos;
+ activeLanes.add(commit.lane);
}
}
diff --git a/tools/version.sh b/tools/version.sh
index 2fae5e1427..eaff9a61d8 100755
--- a/tools/version.sh
+++ b/tools/version.sh
@@ -141,7 +141,7 @@ perl -pi~ -e '
$seen_version = 0;
$old_argv = $ARGV;
}
- if ($seen_version < 6) {
+ if ($seen_version < 5) {
$seen_version++ if
s{<(version)>.*</\1>}{<${1}>'"$POM_V"'</${1}>};
}