Browse Source

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>
stable-2.1
Markus Duft 13 years ago committed by Chris Aniszczyk
parent
commit
1e75941410
  1. 15
      org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java
  2. 58
      org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutResult.java

15
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);

58
org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutResult.java

@ -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;
}
}

Loading…
Cancel
Save