diff options
author | James Moger <james.moger@gitblit.com> | 2014-05-07 10:28:29 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2014-05-07 10:28:29 -0400 |
commit | ae6db865961bca99f13cf6f5658c8265765d7b48 (patch) | |
tree | 5fd846816005980415f465cdd7fb75d2de5cf729 /src | |
parent | e7bb5589b18b2bd176ef0cd152e0737c2f5dfa4c (diff) | |
parent | ce07c4f4ca47eebb53815aaa361a24ea46dc3757 (diff) | |
download | gitblit-ae6db865961bca99f13cf6f5658c8265765d7b48.tar.gz gitblit-ae6db865961bca99f13cf6f5658c8265765d7b48.zip |
Merge branch 'ticket/54' into develop
Diffstat (limited to 'src')
4 files changed, 33 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/git/GitblitReceivePack.java b/src/main/java/com/gitblit/git/GitblitReceivePack.java index 61f2d67d..b4449f06 100644 --- a/src/main/java/com/gitblit/git/GitblitReceivePack.java +++ b/src/main/java/com/gitblit/git/GitblitReceivePack.java @@ -331,6 +331,8 @@ public class GitblitReceivePack extends ReceivePack implements PreReceiveHook, P return;
}
+ boolean isRefCreationOrDeletion = false;
+
// log ref changes
for (ReceiveCommand cmd : commands) {
@@ -339,9 +341,11 @@ public class GitblitReceivePack extends ReceivePack implements PreReceiveHook, P switch (cmd.getType()) {
case DELETE:
LOGGER.info(MessageFormat.format("{0} DELETED {1} in {2} ({3})", user.username, cmd.getRefName(), repository.name, cmd.getOldId().name()));
+ isRefCreationOrDeletion = true;
break;
case CREATE:
LOGGER.info(MessageFormat.format("{0} CREATED {1} in {2}", user.username, cmd.getRefName(), repository.name));
+ isRefCreationOrDeletion = true;
break;
case UPDATE:
LOGGER.info(MessageFormat.format("{0} UPDATED {1} in {2} (from {3} to {4})", user.username, cmd.getRefName(), repository.name, cmd.getOldId().name(), cmd.getNewId().name()));
@@ -355,6 +359,10 @@ public class GitblitReceivePack extends ReceivePack implements PreReceiveHook, P }
}
+ if (isRefCreationOrDeletion) {
+ gitblit.resetRepositoryCache(repository.name);
+ }
+
if (repository.useIncrementalPushTags) {
// tag each pushed branch tip
String emailAddress = user.emailAddress == null ? rp.getRefLogIdent().getEmailAddress() : user.emailAddress;
diff --git a/src/main/java/com/gitblit/manager/GitblitManager.java b/src/main/java/com/gitblit/manager/GitblitManager.java index 5b16ef66..2782e724 100644 --- a/src/main/java/com/gitblit/manager/GitblitManager.java +++ b/src/main/java/com/gitblit/manager/GitblitManager.java @@ -929,6 +929,11 @@ public class GitblitManager implements IGitblit { } @Override + public void resetRepositoryCache(String repositoryName) { + repositoryManager.resetRepositoryCache(repositoryName); + } + + @Override public List<String> getRepositoryList() { return repositoryManager.getRepositoryList(); } diff --git a/src/main/java/com/gitblit/manager/IRepositoryManager.java b/src/main/java/com/gitblit/manager/IRepositoryManager.java index fd5fc14b..69177f1e 100644 --- a/src/main/java/com/gitblit/manager/IRepositoryManager.java +++ b/src/main/java/com/gitblit/manager/IRepositoryManager.java @@ -159,6 +159,14 @@ public interface IRepositoryManager extends IManager { void resetRepositoryListCache(); /** + * Reset all caches for this repository. + * + * @param repositoryName + * @since 1.5.1 + */ + void resetRepositoryCache(String repositoryName); + + /** * Returns the list of all repositories available to Gitblit. This method * does not consider user access permissions. * diff --git a/src/main/java/com/gitblit/manager/RepositoryManager.java b/src/main/java/com/gitblit/manager/RepositoryManager.java index a76787bb..7351eb97 100644 --- a/src/main/java/com/gitblit/manager/RepositoryManager.java +++ b/src/main/java/com/gitblit/manager/RepositoryManager.java @@ -455,6 +455,18 @@ public class RepositoryManager implements IRepositoryManager { } /** + * Reset all caches for this repository. + * + * @param repositoryName + * @since 1.5.1 + */ + @Override + public void resetRepositoryCache(String repositoryName) { + removeFromCachedRepositoryList(repositoryName); + clearRepositoryMetadataCache(repositoryName); + } + + /** * Resets the repository list cache. * */ |