James Moger
2011-06-25 22fc5e48cbe050d8485f78f6165b59e4085eaeef
src/com/gitblit/utils/JGitUtils.java
@@ -96,7 +96,8 @@
      return r.toString().trim();
   }
   public static FetchResult cloneRepository(File repositoriesFolder, String name, String fromUrl) throws Exception {
   public static FetchResult cloneRepository(File repositoriesFolder, String name, String fromUrl)
         throws Exception {
      FetchResult result = null;
      if (!name.toLowerCase().endsWith(Constants.DOT_GIT_EXT)) {
         name += Constants.DOT_GIT_EXT;
@@ -402,35 +403,29 @@
   public static List<PathChangeModel> getFilesInCommit(Repository r, RevCommit commit) {
      List<PathChangeModel> list = new ArrayList<PathChangeModel>();
      RevWalk rw = new RevWalk(r);
      TreeWalk tw = new TreeWalk(r);
      try {
         if (commit == null) {
            ObjectId object = r.resolve(Constants.HEAD);
            commit = rw.parseCommit(object);
         }
         RevTree commitTree = commit.getTree();
         tw.reset();
         tw.setRecursive(true);
         if (commit.getParentCount() == 0) {
            tw.addTree(commitTree);
            TreeWalk tw = new TreeWalk(r);
            tw.reset();
            tw.setRecursive(true);
            tw.addTree(commit.getTree());
            while (tw.next()) {
               list.add(new PathChangeModel(tw.getPathString(), tw.getPathString(), 0, tw
                     .getRawMode(0), commit.getId().getName(), ChangeType.ADD));
            }
            tw.release();
         } else {
            RevCommit parent = rw.parseCommit(commit.getParent(0).getId());
            RevTree parentTree = parent.getTree();
            tw.addTree(parentTree);
            tw.addTree(commitTree);
            tw.setFilter(TreeFilter.ANY_DIFF);
            RawTextComparator cmp = RawTextComparator.DEFAULT;
            DiffFormatter df = new DiffFormatter(DisabledOutputStream.INSTANCE);
            df.setRepository(r);
            df.setDiffComparator(cmp);
            df.setDiffComparator(RawTextComparator.DEFAULT);
            df.setDetectRenames(true);
            List<DiffEntry> diffs = df.scan(parentTree, commitTree);
            List<DiffEntry> diffs = df.scan(parent.getTree(), commit.getTree());
            for (DiffEntry diff : diffs) {
               if (diff.getChangeType().equals(ChangeType.DELETE)) {
                  list.add(new PathChangeModel(diff.getOldPath(), diff.getOldPath(), 0, diff
@@ -447,7 +442,6 @@
         LOGGER.error("failed to determine files in commit!", t);
      } finally {
         rw.dispose();
         tw.release();
      }
      return list;
   }
@@ -532,6 +526,9 @@
   public static List<RevCommit> getRevLog(Repository r, String objectId, String path, int offset,
         int maxCount) {
      List<RevCommit> list = new ArrayList<RevCommit>();
      if (maxCount == 0) {
         return list;
      }
      if (!hasCommits(r)) {
         return list;
      }
@@ -597,6 +594,9 @@
         final SearchType type, int offset, int maxCount) {
      final String lcValue = value.toLowerCase();
      List<RevCommit> list = new ArrayList<RevCommit>();
      if (maxCount == 0) {
         return list;
      }
      if (!hasCommits(r)) {
         return list;
      }
@@ -683,6 +683,9 @@
   private static List<RefModel> getRefs(Repository r, String refs, boolean fullName, int maxCount) {
      List<RefModel> list = new ArrayList<RefModel>();
      if (maxCount == 0) {
         return list;
      }
      try {
         Map<String, Ref> map = r.getRefDatabase().getRefs(refs);
         RevWalk rw = new RevWalk(r);