diff options
author | Markus Duft <markus.duft@salomon.at> | 2012-06-04 15:37:53 +0200 |
---|---|---|
committer | Chris Aniszczyk <zx@twitter.com> | 2012-08-07 21:40:21 -0700 |
commit | 1e75941410e3a6e5a21f3155521e80f6f0a08a47 (patch) | |
tree | cda5ddd5ed3eeb024824bec022ac9052a0259bf8 /org.eclipse.jgit/src/org/eclipse/jgit/api | |
parent | e9c811d0d08a9c2c748311a13a86b481941a55ce (diff) | |
download | jgit-1e75941410e3a6e5a21f3155521e80f6f0a08a47.tar.gz jgit-1e75941410e3a6e5a21f3155521e80f6f0a08a47.zip |
Make CheckoutCommand pass modified files through result
This change makes CheckoutCommand pass the list of modified files
through the OK result, enabling outside world to react in a smaller
scope (for example refresh only resources containing the modified
files).
Change-Id: I53c50ee09bc0d3ff501bdc25196e52e739c3f1f9
Signed-off-by: Chris Aniszczyk <zx@twitter.com>
Diffstat (limited to 'org.eclipse.jgit/src/org/eclipse/jgit/api')
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java | 15 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutResult.java | 58 |
2 files changed, 61 insertions, 12 deletions
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 479fbd047d..d8efbe7a61 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java @@ -46,6 +46,7 @@ package org.eclipse.jgit.api; import java.io.File; import java.io.IOException; import java.text.MessageFormat; +import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -135,7 +136,7 @@ public class CheckoutCommand extends GitCommand<Ref> { try { if (checkoutAllPaths || !paths.isEmpty()) { checkoutPaths(); - status = CheckoutResult.OK_RESULT; + status = new CheckoutResult(Status.OK, paths); setCallable(false); return null; } @@ -215,12 +216,14 @@ public class CheckoutCommand extends GitCommand<Ref> { throw new JGitInternalException(MessageFormat.format(JGitText .get().checkoutUnexpectedResult, updateResult.name())); + if (!dco.getToBeDeleted().isEmpty()) { - status = new CheckoutResult(Status.NONDELETED, dco - .getToBeDeleted()); - } - else - status = CheckoutResult.OK_RESULT; + status = new CheckoutResult(Status.NONDELETED, + dco.getToBeDeleted()); + } else + status = new CheckoutResult(new ArrayList<String>(dco + .getUpdated().keySet()), dco.getRemoved()); + return ref; } catch (IOException ioe) { throw new JGitInternalException(ioe.getMessage(), ioe); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutResult.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutResult.java index 7366493245..6a1bfb8f0e 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutResult.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutResult.java @@ -52,12 +52,6 @@ import java.util.List; public class CheckoutResult { /** - * The {@link Status#OK} result; - */ - public static final CheckoutResult OK_RESULT = new CheckoutResult( - Status.OK, null); - - /** * The {@link Status#ERROR} result; */ public static final CheckoutResult ERROR_RESULT = new CheckoutResult( @@ -101,6 +95,23 @@ public class CheckoutResult { private final List<String> undeletedList; + private final List<String> modifiedList; + + private final List<String> removedList; + + /** + * Create a new fail result. If status is {@link Status#CONFLICTS}, + * <code>fileList</code> is a list of conflicting files, if status is + * {@link Status#NONDELETED}, <code>fileList</code> is a list of not deleted + * files. All other values ignore <code>fileList</code>. To create a result + * for {@link Status#OK}, see {@link #CheckoutResult(List, List)}. + * + * @param status + * the failure status + * @param fileList + * the list of files to store, status has to be either + * {@link Status#CONFLICTS} or {@link Status#NONDELETED}. + */ CheckoutResult(Status status, List<String> fileList) { myStatus = status; if (status == Status.CONFLICTS) @@ -112,6 +123,26 @@ public class CheckoutResult { else this.undeletedList = new ArrayList<String>(0); + this.modifiedList = new ArrayList<String>(0); + this.removedList = new ArrayList<String>(0); + } + + /** + * Create a new OK result with modified and removed files. + * + * @param modified + * the modified files + * @param removed + * the removed files. + */ + CheckoutResult(List<String> modified, List<String> removed) { + myStatus = Status.OK; + + this.conflictList = new ArrayList<String>(0); + this.undeletedList = new ArrayList<String>(0); + + this.modifiedList = modified; + this.removedList = removed; } /** @@ -138,4 +169,19 @@ public class CheckoutResult { return undeletedList; } + /** + * @return the list of files that where modified during checkout, or an + * empty list if {@link #getStatus()} is not {@link Status#OK} + */ + public List<String> getModifiedList() { + return modifiedList; + } + + /** + * @return the list of files that where removed during checkout, or an empty + * list if {@link #getStatus()} is not {@link Status#OK} + */ + public List<String> getRemovedList() { + return removedList; + } } |