]> source.dussan.org Git - jgit.git/commitdiff
Make CheckoutCommand pass modified files through result 37/5337/9
authorMarkus Duft <markus.duft@salomon.at>
Mon, 4 Jun 2012 13:37:53 +0000 (15:37 +0200)
committerChris Aniszczyk <zx@twitter.com>
Wed, 8 Aug 2012 04:40:21 +0000 (21:40 -0700)
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>
org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java
org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutResult.java

index 479fbd047de9b23ffd8834e1fdd6e0aac4778e0c..d8efbe7a61c9fcc2e8560cc5049bde50819fe8ea 100644 (file)
@@ -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);
index 736649324594e0951b4b9a0724af8035b34fe6b9..6a1bfb8f0ebfd915e1574e3897e65515220078e2 100644 (file)
@@ -51,12 +51,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;
         */
@@ -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;
+       }
 }