[JGIT PATCH 4/4] LsTree: Enable pattern matching in LsTree
- Date: Tue, 24 Jun 2008 23:36:32 +0200
- From: Robin Rosenberg <robin.rosenberg@xxxxxxxxxx>
- Subject: [JGIT PATCH 4/4] LsTree: Enable pattern matching in LsTree
Signed-off-by: Robin Rosenberg <robin.rosenberg@xxxxxxxxxx>
---
.../src/org/spearce/jgit/pgm/LsTree.java | 19 +++++++++++++------
.../jgit/treewalk/filter/WildCardTreeFilter.java | 2 +-
2 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/org.spearce.jgit/src/org/spearce/jgit/pgm/LsTree.java b/org.spearce.jgit/src/org/spearce/jgit/pgm/LsTree.java
index 05ec8c3..6bb4192 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/pgm/LsTree.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/pgm/LsTree.java
@@ -43,8 +43,11 @@ import org.spearce.jgit.lib.Constants;
import org.spearce.jgit.lib.FileMode;
import org.spearce.jgit.treewalk.FileTreeIterator;
import org.spearce.jgit.treewalk.TreeWalk;
+import org.spearce.jgit.treewalk.filter.TreeFilter;
+import org.spearce.jgit.treewalk.filter.WildCardTreeFilter;
class LsTree extends TextBuiltin {
+
@Override
void execute(final String[] args) throws Exception {
final TreeWalk walk = new TreeWalk(db);
@@ -60,18 +63,22 @@ class LsTree extends TextBuiltin {
break;
}
- if (argi == args.length)
- throw die("usage: [-r] treename");
- else if (argi + 1 < args.length)
- throw die("too many arguments");
-
walk.reset(); // drop the first empty tree, which we do not need here
- final String n = args[argi];
+ final String n = args[argi++];
if (is_WorkDir(n))
walk.addTree(new FileTreeIterator(new File(n)));
else
walk.addTree(resolve(n));
+ if (argi == args.length - 1) {
+ TreeFilter filter = WildCardTreeFilter.create(args[argi++]);
+ walk.setFilter(filter);
+ }
+ if (argi + 1 == args.length)
+ throw die("usage: [-r] treename [pattern]");
+ else if (argi + 1 < args.length)
+ throw die("too many arguments");
+
while (walk.next()) {
final FileMode mode = walk.getFileMode(0);
if (mode == FileMode.TREE)
diff --git a/org.spearce.jgit/src/org/spearce/jgit/treewalk/filter/WildCardTreeFilter.java b/org.spearce.jgit/src/org/spearce/jgit/treewalk/filter/WildCardTreeFilter.java
index ce6da5e..8b22e25 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/treewalk/filter/WildCardTreeFilter.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/treewalk/filter/WildCardTreeFilter.java
@@ -76,7 +76,7 @@ public class WildCardTreeFilter extends TreeFilter {
if (walker.isRecursive() && walker.isSubtree())
return true;
matcher.reset();
- matcher.append(walker.getPathString());
+ matcher.append(walker.getName());
if (matcher.isMatch())
return true;
return false;
--
1.5.5.1.178.g1f811
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html