James Moger
2012-02-23 4fea450fd3edfba6bb9e2c3c0a9231c6d227a09c
src/com/gitblit/utils/JGitUtils.java
@@ -24,7 +24,6 @@
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
@@ -424,11 +423,9 @@
    * last modified date of the repository folder is returned.
    * 
    * @param repository
    * @param branch
    *            if unspecified, all branches are checked.
    * @return
    */
   public static Date getLastChange(Repository repository, String branch) {
   public static Date getLastChange(Repository repository) {
      if (!hasCommits(repository)) {
         // null repository
         if (repository == null) {
@@ -437,26 +434,21 @@
         // fresh repository
         return new Date(repository.getDirectory().lastModified());
      }
      if (StringUtils.isEmpty(branch)) {
         List<RefModel> branchModels = getLocalBranches(repository, true, -1);
         if (branchModels.size() > 0) {
            // find most recent branch update
            Date lastChange = new Date(0);
            for (RefModel branchModel : branchModels) {
               if (branchModel.getDate().after(lastChange)) {
                  lastChange = branchModel.getDate();
               }
            }
            return lastChange;
         } else {
            // try to find head
            branch = Constants.HEAD;
         }
      }
      // lookup specified branch
      RevCommit commit = getCommit(repository, branch);
      return getCommitDate(commit);
      List<RefModel> branchModels = getLocalBranches(repository, true, -1);
      if (branchModels.size() > 0) {
         // find most recent branch update
         Date lastChange = new Date(0);
         for (RefModel branchModel : branchModels) {
            if (branchModel.getDate().after(lastChange)) {
               lastChange = branchModel.getDate();
            }
         }
         return lastChange;
      }
      // default to the repository folder modification date
      return new Date(repository.getDirectory().lastModified());
   }
   /**
@@ -745,25 +737,40 @@
   }
   /**
    * Returns the list of files in the repository that match one of the
    * specified extensions. This is a CASE-SENSITIVE search. If the repository
    * does not exist or is empty, an empty list is returned.
    * Returns the list of files in the repository on the default branch that
    * match one of the specified extensions. This is a CASE-SENSITIVE search.
    * If the repository does not exist or is empty, an empty list is returned.
    * 
    * @param repository
    * @param extensions
    * @return list of files in repository with a matching extension
    */
   public static List<PathModel> getDocuments(Repository repository, List<String> extensions) {
      return getDocuments(repository, extensions, null);
   }
   /**
    * Returns the list of files in the repository in the specified commit that
    * match one of the specified extensions. This is a CASE-SENSITIVE search.
    * If the repository does not exist or is empty, an empty list is returned.
    *
    * @param repository
    * @param extensions
    * @param objectId
    * @return list of files in repository with a matching extension
    */
   public static List<PathModel> getDocuments(Repository repository, List<String> extensions,
         String objectId) {
      List<PathModel> list = new ArrayList<PathModel>();
      if (!hasCommits(repository)) {
         return list;
      }
      RevCommit commit = getCommit(repository, null);
      RevCommit commit = getCommit(repository, objectId);
      final TreeWalk tw = new TreeWalk(repository);
      try {
         tw.addTree(commit.getTree());
         if (extensions != null && extensions.size() > 0) {
            Collection<TreeFilter> suffixFilters = new ArrayList<TreeFilter>();
            List<TreeFilter> suffixFilters = new ArrayList<TreeFilter>();
            for (String extension : extensions) {
               if (extension.charAt(0) == '.') {
                  suffixFilters.add(PathSuffixFilter.create("\\" + extension));
@@ -772,7 +779,12 @@
                  suffixFilters.add(PathSuffixFilter.create("\\." + extension));
               }
            }
            TreeFilter filter = OrTreeFilter.create(suffixFilters);
            TreeFilter filter;
            if (suffixFilters.size() == 1) {
               filter = suffixFilters.get(0);
            } else {
               filter = OrTreeFilter.create(suffixFilters);
            }
            tw.setFilter(filter);
            tw.setRecursive(true);
         }
@@ -942,6 +954,9 @@
            branchObject = getDefaultBranch(repository);
         } else {
            branchObject = repository.resolve(objectId);
         }
         if (branchObject == null) {
            return list;
         }
         RevWalk rw = new RevWalk(repository);
@@ -1478,7 +1493,7 @@
            // Create a tree object to reference from a commit
            TreeFormatter tree = new TreeFormatter();
            tree.append("NEWBRANCH", FileMode.REGULAR_FILE, blobId);
            tree.append(".branch", FileMode.REGULAR_FILE, blobId);
            ObjectId treeId = odi.insert(tree);
            // Create a commit object