summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2014-02-28 14:34:24 -0500
committerJames Moger <james.moger@gitblit.com>2014-03-01 09:21:32 -0500
commit131da2786c1bf275c07ba628af4254a40d1dc42f (patch)
tree817b43c2c47b665b5a0e0c7aa7ca27bd207ea57e /src/main
parent115551c76c3af879b49447dce64d7a6c29049c40 (diff)
downloadgitblit-131da2786c1bf275c07ba628af4254a40d1dc42f.tar.gz
gitblit-131da2786c1bf275c07ba628af4254a40d1dc42f.zip
Improve getting changed paths in a commit range
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/gitblit/utils/JGitUtils.java32
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 7621c0e0..6a6085e7 100644
--- a/src/main/java/com/gitblit/utils/JGitUtils.java
+++ b/src/main/java/com/gitblit/utils/JGitUtils.java
@@ -976,6 +976,36 @@ public class JGitUtils {
* 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 @@ public class JGitUtils {
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);