From c1c3c6a7a2f0a2893ef36ab3dfc7b09d04a133bc Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 26 Apr 2011 18:05:39 -0400 Subject: [PATCH] Commit header panel. File type icons. Docs page. --- src/com/gitblit/utils/JGitUtils.java | 43 +++++++++++++++++++++++++++++++++++++++---- 1 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java index eddd3df..e5dbfd2 100644 --- a/src/com/gitblit/utils/JGitUtils.java +++ b/src/com/gitblit/utils/JGitUtils.java @@ -8,6 +8,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashMap; @@ -43,8 +44,10 @@ import org.eclipse.jgit.revwalk.filter.RevFilter; import org.eclipse.jgit.treewalk.TreeWalk; import org.eclipse.jgit.treewalk.filter.AndTreeFilter; +import org.eclipse.jgit.treewalk.filter.OrTreeFilter; import org.eclipse.jgit.treewalk.filter.PathFilter; import org.eclipse.jgit.treewalk.filter.PathFilterGroup; +import org.eclipse.jgit.treewalk.filter.PathSuffixFilter; import org.eclipse.jgit.treewalk.filter.TreeFilter; import org.eclipse.jgit.util.io.DisabledOutputStream; import org.slf4j.Logger; @@ -350,6 +353,42 @@ } catch (Throwable t) { LOGGER.error("failed to determine files in commit!", t); } + return list; + } + + public static List<PathModel> getDocuments(Repository r, List<String> extensions) { + List<PathModel> list = new ArrayList<PathModel>(); + RevCommit commit = getCommit(r, Constants.HEAD); + final TreeWalk walk = new TreeWalk(r); + try { + walk.addTree(commit.getTree()); + if (extensions != null && extensions.size() > 0) { + Collection<TreeFilter> suffixFilters = new ArrayList<TreeFilter>(); + for (String extension:extensions) { + if (extension.charAt(0) == '.') { + suffixFilters.add(PathSuffixFilter.create(extension)); + } else { + // escape the . since this is a regexp filter + suffixFilters.add(PathSuffixFilter.create("\\." + extension)); + } + } + TreeFilter filter = OrTreeFilter.create(suffixFilters); + walk.setFilter(filter); + walk.setRecursive(true); + while (walk.next()) { + list.add(getPathModel(walk, null, commit)); + } + } else { + while (walk.next()) { + list.add(getPathModel(walk, null, commit)); + } + } + } catch (IOException e) { + LOGGER.error("Failed to get files for commit " + commit.getName(), e); + } finally { + walk.release(); + } + Collections.sort(list); return list; } @@ -895,10 +934,6 @@ return metrics; } - public static RefModel getDocumentsBranch(Repository r) { - return getTicketsBranch(r); - } - public static RefModel getTicketsBranch(Repository r) { RefModel ticgitBranch = null; try { -- Gitblit v1.9.1