From aa1361d04cfe09f90e7d8bece90c00dd6e4185bb Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 03 Jul 2014 16:57:47 -0400 Subject: [PATCH] Replace Dagger with Guice 4.0 beta and update Guava to 16.0.1 --- src/main/java/com/gitblit/utils/DiffUtils.java | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gitblit/utils/DiffUtils.java b/src/main/java/com/gitblit/utils/DiffUtils.java index 107f6ab..dd2a780 100644 --- a/src/main/java/com/gitblit/utils/DiffUtils.java +++ b/src/main/java/com/gitblit/utils/DiffUtils.java @@ -346,6 +346,38 @@ return diff; } + /** + * Returns the diffstat between the two commits for the specified file or folder. + * + * @param repository + * @param base + * if base commit is unspecified, the diffstat is generated against + * the primary parent of the specified tip. + * @param tip + * @param path + * if path is specified, the diffstat is generated only for the + * specified file or folder. if unspecified, the diffstat is + * generated for the entire diff between the two commits. + * @return patch as a string + */ + public static DiffStat getDiffStat(Repository repository, String base, String tip) { + RevCommit baseCommit = null; + RevCommit tipCommit = null; + RevWalk revWalk = new RevWalk(repository); + try { + tipCommit = revWalk.parseCommit(repository.resolve(tip)); + if (!StringUtils.isEmpty(base)) { + baseCommit = revWalk.parseCommit(repository.resolve(base)); + } + return getDiffStat(repository, baseCommit, tipCommit, null); + } catch (Exception e) { + LOGGER.error("failed to generate diffstat!", e); + } finally { + revWalk.dispose(); + } + return null; + } + public static DiffStat getDiffStat(Repository repository, RevCommit commit) { return getDiffStat(repository, null, commit, null); } -- Gitblit v1.9.1