Browse Source

Reset dashboard and activity commit cache on branch REWIND or DELETE

tags/v1.3.1
James Moger 10 years ago
parent
commit
f01bc58183

+ 1
- 0
releases.moxie View File

@@ -13,6 +13,7 @@ r18: {
- 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: ~

+ 17
- 0
src/main/java/com/gitblit/git/ReceiveHook.java View File

@@ -36,6 +36,7 @@ import org.eclipse.jgit.transport.ReceivePack;
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.RepositoryModel;
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 @@ public class ReceiveHook implements PreReceiveHook, PostReceiveHook {
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));

+ 17
- 0
src/main/java/com/gitblit/utils/CommitCache.java View File

@@ -109,6 +109,23 @@ public class CommitCache {
}
}
/**
* 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.
*

Loading…
Cancel
Save