James Moger
2013-07-16 f01bc58183dca2378ffe931315396583d053c6be
Reset dashboard and activity commit cache on branch REWIND or DELETE
3 files modified
35 ■■■■■ changed files
releases.moxie 1 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/git/ReceiveHook.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/utils/CommitCache.java 17 ●●●●● patch | view | raw | blame | history
releases.moxie
@@ -13,6 +13,7 @@
    - Gitblit-as-viewer with no repository urls failed to display summary page (issue 269)
    - Fixed missing model class dependencies in Gitblit Manager build
    - Fix for IE10 compatability mode
    - Reset dashboard and activity commit cache on branch REWIND or DELETE
    changes: ~
    additions: ~
    dependencyChanges: ~
src/main/java/com/gitblit/git/ReceiveHook.java
@@ -36,6 +36,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gitblit.Constants;
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
@@ -44,6 +45,7 @@
import com.gitblit.models.UserModel;
import com.gitblit.utils.ArrayUtils;
import com.gitblit.utils.ClientLogger;
import com.gitblit.utils.CommitCache;
import com.gitblit.utils.JGitUtils;
import com.gitblit.utils.RefLogUtils;
import com.gitblit.utils.StringUtils;
@@ -186,6 +188,21 @@
                return;
            }
        }
        // reset branch commit cache on REWIND and DELETE
        for (ReceiveCommand cmd : commands) {
            String ref = cmd.getRefName();
            if (ref.startsWith(Constants.R_HEADS)) {
                switch (cmd.getType()) {
                case UPDATE_NONFASTFORWARD:
                case DELETE:
                    CommitCache.instance().clear(repository.name, ref);
                    break;
                default:
                    break;
                }
            }
        }
        Set<String> scripts = new LinkedHashSet<String>();
        scripts.addAll(GitBlit.self().getPreReceiveScriptsInherited(repository));
src/main/java/com/gitblit/utils/CommitCache.java
@@ -110,6 +110,23 @@
    }
    
    /**
     * Clears the commit cache for a specific branch of a specific repository.
     *
     * @param repositoryName
     * @param branch
     */
    public void clear(String repositoryName, String branch) {
        String repoKey = repositoryName.toLowerCase();
        ObjectCache<List<RepositoryCommit>> repoCache = cache.get(repoKey);
        if (repoCache != null) {
            List<RepositoryCommit> commits = repoCache.remove(branch.toLowerCase());
            if (!ArrayUtils.isEmpty(commits)) {
                logger.info(MessageFormat.format("{0}:{1} commit cache cleared", repositoryName, branch));
            }
        }
    }
    /**
     * Get all commits for the specified repository:branch that are in the cache.
     * 
     * @param repositoryName