Tom
2014-10-26 df0ba7f7ff02ed02c0ba7714ae928a79d932baef
src/main/java/com/gitblit/utils/DiffUtils.java
@@ -228,15 +228,16 @@
      DiffStat stat = null;
      String diff = null;
      try {
         final ByteArrayOutputStream os = new ByteArrayOutputStream();
         ByteArrayOutputStream os = null;
         RawTextComparator cmp = RawTextComparator.DEFAULT;
         DiffFormatter df;
         switch (outputType) {
         case HTML:
            df = new GitBlitDiffFormatter(os, commit.getName());
            df = new GitBlitDiffFormatter(commit.getName(), path);
            break;
         case PLAIN:
         default:
            os = new ByteArrayOutputStream();
            df = new DiffFormatter(os);
            break;
         }
@@ -271,6 +272,7 @@
         } else {
            df.format(diffEntries);
         }
         df.flush();
         if (df instanceof GitBlitDiffFormatter) {
            // workaround for complex private methods in DiffFormatter
            diff = ((GitBlitDiffFormatter) df).getHtml();
@@ -278,7 +280,6 @@
         } else {
            diff = os.toString();
         }
         df.flush();
      } catch (Throwable t) {
         LOGGER.error("failed to generate commit diff!", t);
      }
@@ -346,6 +347,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);
   }