summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Aniszczyk <caniszczyk@gmail.com>2011-03-17 14:30:55 -0500
committerChris Aniszczyk <caniszczyk@gmail.com>2011-03-17 14:47:41 -0500
commita443043080b23b79ddaf074db5dcc56a9661d110 (patch)
treed2e06f2dfe7116e1f8d0a9ea6d1859e41fe806b8
parent04f7acb7e7c667b2a91cff2fe63c18df34924757 (diff)
downloadjgit-a443043080b23b79ddaf074db5dcc56a9661d110.tar.gz
jgit-a443043080b23b79ddaf074db5dcc56a9661d110.zip
Add path filtering to LogCommand
Bug: 340049 Change-Id: I825b93b3412a3041aca225962fc8463a8f180650 Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java
index 6d60f5d74f..9b39d52a2a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java
@@ -44,6 +44,8 @@ package org.eclipse.jgit.api;
import java.io.IOException;
import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
import org.eclipse.jgit.JGitText;
import org.eclipse.jgit.api.errors.JGitInternalException;
@@ -56,6 +58,8 @@ import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
+import org.eclipse.jgit.treewalk.filter.PathFilter;
+import org.eclipse.jgit.treewalk.filter.PathFilterGroup;
/**
* A class used to execute a {@code Log} command. It has setters for all
@@ -76,6 +80,8 @@ public class LogCommand extends GitCommand<Iterable<RevCommit>> {
private boolean startSpecified = false;
+ private final List<PathFilter> pathFilters = new ArrayList<PathFilter>();
+
/**
* @param repo
*/
@@ -96,6 +102,8 @@ public class LogCommand extends GitCommand<Iterable<RevCommit>> {
public Iterable<RevCommit> call() throws NoHeadException,
JGitInternalException {
checkCallable();
+ if (pathFilters.size() > 0)
+ walk.setTreeFilter(PathFilterGroup.create(pathFilters));
if (!startSpecified) {
try {
ObjectId headId = repo.resolve(Constants.HEAD);
@@ -202,6 +210,21 @@ public class LogCommand extends GitCommand<Iterable<RevCommit>> {
return not(since).add(until);
}
+ /**
+ * Show only commits that affect any of the specified paths. The path must
+ * either name a file or a directory exactly. Note that regex expressions or
+ * wildcards are not supported.
+ *
+ * @param path
+ * a path is relative to the top level of the repository
+ * @return {@code this}
+ */
+ public LogCommand addPath(String path) {
+ checkCallable();
+ pathFilters.add(PathFilter.create(path));
+ return this;
+ }
+
private LogCommand add(boolean include, AnyObjectId start)
throws MissingObjectException, IncorrectObjectTypeException,
JGitInternalException {