James Moger
2012-04-11 a9eb6b1105cd47f00ae45dacda9af8e829ade191
src/com/gitblit/LuceneExecutor.java
@@ -73,6 +73,7 @@
import org.eclipse.jgit.lib.ObjectLoader;
import org.eclipse.jgit.lib.ObjectReader;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.RepositoryCache.FileKey;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevTree;
import org.eclipse.jgit.revwalk.RevWalk;
@@ -157,6 +158,10 @@
    */
   @Override
   public void run() {
      if (!storedSettings.getBoolean(Keys.web.allowLuceneIndexing, true)) {
         // Lucene indexing is disabled
         return;
      }
      // reload the excluded extensions
      String exts = storedSettings.getString(Keys.web.luceneIgnoreExtensions, luceneIgnoreExtensions);
      excludedExtensions = new TreeSet<String>(StringUtils.getStringsFromValue(exts));
@@ -443,7 +448,7 @@
         ObjectId defaultBranchId = JGitUtils.getDefaultBranch(repository);
         for (RefModel branch :  branches) {
            if (branch.getObjectId().equals(defaultBranchId)) {
               defaultBranch = branch;
               defaultBranch = branch;
               break;
            }
         }
@@ -453,8 +458,22 @@
         // walk through each branch
         for (RefModel branch : branches) {
            boolean indexBranch = false;
            if (model.indexedBranches.contains(com.gitblit.Constants.DEFAULT_BRANCH)
                  && branch.equals(defaultBranch)) {
               // indexing "default" branch
               indexBranch = true;
            } else if (IssueUtils.GB_ISSUES.equals(branch)) {
               // skip the GB_ISSUES branch because it is indexed later
               // note: this is different than updateIndex
               indexBranch = false;
            } else {
               // normal explicit branch check
               indexBranch = model.indexedBranches.contains(branch.getName());
            }
            // if this branch is not specifically indexed then skip
            if (!model.indexedBranches.contains(branch.getName())) {
            if (!indexBranch) {
               continue;
            }
@@ -665,7 +684,7 @@
         
         // get any annotated commit tags
         List<String> commitTags = new ArrayList<String>();
         for (RefModel ref : JGitUtils.getTags(repository, true, -1)) {
         for (RefModel ref : JGitUtils.getTags(repository, false, -1)) {
            if (ref.isAnnotatedTag() && ref.getReferencedObjectId().equals(commit.getId())) {
               commitTags.add(ref.displayName);
            }
@@ -778,20 +797,55 @@
            deletedBranches.add(branch);
         }
         // walk through each branches
         // get the local branches
         List<RefModel> branches = JGitUtils.getLocalBranches(repository, true, -1);
         // sort them by most recently updated
         Collections.sort(branches, new Comparator<RefModel>() {
            @Override
            public int compare(RefModel ref1, RefModel ref2) {
               return ref2.getDate().compareTo(ref1.getDate());
            }
         });
         // reorder default branch to first position
         RefModel defaultBranch = null;
         ObjectId defaultBranchId = JGitUtils.getDefaultBranch(repository);
         for (RefModel branch :  branches) {
            if (branch.getObjectId().equals(defaultBranchId)) {
               defaultBranch = branch;
               break;
            }
         }
         branches.remove(defaultBranch);
         branches.add(0, defaultBranch);
         // walk through each branches
         for (RefModel branch : branches) {
            String branchName = branch.getName();
            // determine if we should skip this branch
            if (!IssueUtils.GB_ISSUES.equals(branch)
                  && !model.indexedBranches.contains(branch.getName())) {
            boolean indexBranch = false;
            if (model.indexedBranches.contains(com.gitblit.Constants.DEFAULT_BRANCH)
                  && branch.equals(defaultBranch)) {
               // indexing "default" branch
               indexBranch = true;
            } else if (IssueUtils.GB_ISSUES.equals(branch)) {
               // update issues modified on the GB_ISSUES branch
               // note: this is different than reindex
               indexBranch = true;
            } else {
               // normal explicit branch check
               indexBranch = model.indexedBranches.contains(branch.getName());
            }
            // if this branch is not specifically indexed then skip
            if (!indexBranch) {
               continue;
            }
            
            // remove this branch from the deletedBranches set
            deletedBranches.remove(branchName);
            // determine last commit
            String keyName = getBranchKey(branchName);
            String lastCommit = config.getString(CONF_BRANCH, null, keyName);
@@ -989,8 +1043,8 @@
    * @throws IOException
    */
   private IndexWriter getIndexWriter(String repository) throws IOException {
      IndexWriter indexWriter = writers.get(repository);
      File repositoryFolder = new File(repositoriesFolder, repository);
      IndexWriter indexWriter = writers.get(repository);
      File repositoryFolder = FileKey.resolve(new File(repositoriesFolder, repository), FS.DETECTED);
      File indexFolder = new File(repositoryFolder, LUCENE_DIR);
      Directory directory = FSDirectory.open(indexFolder);