From f677b07b9871f6b72f3fdb262dc2a5d56ba3718c Mon Sep 17 00:00:00 2001 From: Christian Trutz Date: Thu, 25 Jul 2013 23:28:05 +0200 Subject: [PATCH] Add setter for ProgressMonitor to StatusCommand This is useful if Git.status() is a long running command. Change-Id: I6bdbf347a688043d549c1f091fb4a264a6c7024e Signed-off-by: Christian Trutz Signed-off-by: Robin Stocker --- .../org/eclipse/jgit/api/StatusCommand.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/StatusCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/StatusCommand.java index 182ffa84b1..20ba57d8db 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/StatusCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/StatusCommand.java @@ -51,6 +51,7 @@ import org.eclipse.jgit.api.errors.JGitInternalException; import org.eclipse.jgit.errors.NoWorkTreeException; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.IndexDiff; +import org.eclipse.jgit.lib.ProgressMonitor; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.treewalk.FileTreeIterator; import org.eclipse.jgit.treewalk.WorkingTreeIterator; @@ -69,6 +70,7 @@ import org.eclipse.jgit.treewalk.filter.PathFilterGroup; public class StatusCommand extends GitCommand { private WorkingTreeIterator workingTreeIt; private List paths = null; + private ProgressMonitor progressMonitor = null; /** * @param repo @@ -124,7 +126,11 @@ public class StatusCommand extends GitCommand { IndexDiff diff = new IndexDiff(repo, Constants.HEAD, workingTreeIt); if (paths != null) diff.setFilter(PathFilterGroup.createFromStrings(paths)); - diff.diff(); + if (progressMonitor == null) + diff.diff(); + else + diff.diff(progressMonitor, ProgressMonitor.UNKNOWN, + ProgressMonitor.UNKNOWN, ""); //$NON-NLS-1$ return new Status(diff); } catch (IOException e) { throw new JGitInternalException(e.getMessage(), e); @@ -143,4 +149,17 @@ public class StatusCommand extends GitCommand { this.workingTreeIt = workingTreeIt; return this; } + + /** + * To set the {@link ProgressMonitor} which contains callback methods to + * inform you about the progress of this command. + * + * @param progressMonitor + * @return {@code this} + * @since 3.1 + */ + public StatusCommand setProgressMonitor(ProgressMonitor progressMonitor) { + this.progressMonitor = progressMonitor; + return this; + } } -- 2.39.5