diff options
author | Matthias Sohn <matthias.sohn@sap.com> | 2011-12-10 01:06:47 +0100 |
---|---|---|
committer | Matthias Sohn <matthias.sohn@sap.com> | 2011-12-10 01:06:47 +0100 |
commit | e11af568285525f4d16bbefef5faae5fea2ef008 (patch) | |
tree | 5ea72631970da7889606bfa72e74a78b75172687 | |
parent | d1dd3403ac6064eaa8c11c6954b41a51a7b11bb6 (diff) | |
parent | c1f352c100278551a7a144b756983ed8a5990c41 (diff) | |
download | jgit-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>
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}>}; } |