Signed-off-by: Robin Rosenberg <robin.rosenberg@xxxxxxxxxx> --- .../src/org/spearce/jgit/pgm/LsTree.java | 14 +++++++++++++- .../jgit/treewalk/filter/WildCardTreeFilter.java | 2 +- 2 files changed, 14 insertions(+), 2 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..87a003d 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); @@ -66,12 +69,21 @@ class LsTree extends TextBuiltin { 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 dc3faf9..645d52d 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 @@ -74,7 +74,7 @@ public class WildCardTreeFilter extends TreeFilter { public boolean include(TreeWalk walker) throws MissingObjectException, IncorrectObjectTypeException, IOException { 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