From 131da2786c1bf275c07ba628af4254a40d1dc42f Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sat, 01 Mar 2014 09:21:32 -0500
Subject: [PATCH] Improve getting changed paths in a commit range
---
src/main/java/com/gitblit/utils/JGitUtils.java | 32 +++++++++++++++++++++++++++++++-
1 files changed, 31 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/gitblit/utils/JGitUtils.java b/src/main/java/com/gitblit/utils/JGitUtils.java
index 7621c0e..6a6085e 100644
--- a/src/main/java/com/gitblit/utils/JGitUtils.java
+++ b/src/main/java/com/gitblit/utils/JGitUtils.java
@@ -976,6 +976,36 @@
* most recent commit. if null, HEAD is assumed.
* @return list of files changed in a commit range
*/
+ public static List<PathChangeModel> getFilesInRange(Repository repository, String startCommit, String endCommit) {
+ List<PathChangeModel> list = new ArrayList<PathChangeModel>();
+ if (!hasCommits(repository)) {
+ return list;
+ }
+ try {
+ ObjectId startRange = repository.resolve(startCommit);
+ ObjectId endRange = repository.resolve(endCommit);
+ RevWalk rw = new RevWalk(repository);
+ RevCommit start = rw.parseCommit(startRange);
+ RevCommit end = rw.parseCommit(endRange);
+ list.addAll(getFilesInRange(repository, start, end));
+ rw.release();
+ } catch (Throwable t) {
+ error(t, repository, "{0} failed to determine files in range {1}..{2}!", startCommit, endCommit);
+ }
+ return list;
+ }
+
+ /**
+ * Returns the list of files changed in a specified commit. If the
+ * repository does not exist or is empty, an empty list is returned.
+ *
+ * @param repository
+ * @param startCommit
+ * earliest commit
+ * @param endCommit
+ * most recent commit. if null, HEAD is assumed.
+ * @return list of files changed in a commit range
+ */
public static List<PathChangeModel> getFilesInRange(Repository repository, RevCommit startCommit, RevCommit endCommit) {
List<PathChangeModel> list = new ArrayList<PathChangeModel>();
if (!hasCommits(repository)) {
@@ -989,7 +1019,7 @@
List<DiffEntry> diffEntries = df.scan(startCommit.getTree(), endCommit.getTree());
for (DiffEntry diff : diffEntries) {
- PathChangeModel pcm = PathChangeModel.from(diff, null);
+ PathChangeModel pcm = PathChangeModel.from(diff, endCommit.getName());
list.add(pcm);
}
Collections.sort(list);
--
Gitblit v1.9.1