@@ -16,6 +16,7 @@ r23: { | |||
- Fix forcing default locale to en or LANG_CC for web ui (ticket-51) | |||
- Fix inconsistency with repository ownership permission checking (ticket-52) | |||
- Prevent submission from New|Edit ticket page with empty titles (ticket-53) | |||
- Ensure the repository model ref list is refreshed on ref creation or deletion (ticket-54) | |||
- Fix case-sensitivity error in determining fork network (issue-420, ticket-62) | |||
- Fix transport determination for SSH urls served on port 22 (issue-421, ticket-63) | |||
changes: |
@@ -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; |
@@ -928,6 +928,11 @@ public class GitblitManager implements IGitblit { | |||
repositoryManager.resetRepositoryListCache(); | |||
} | |||
@Override | |||
public void resetRepositoryCache(String repositoryName) { | |||
repositoryManager.resetRepositoryCache(repositoryName); | |||
} | |||
@Override | |||
public List<String> getRepositoryList() { | |||
return repositoryManager.getRepositoryList(); |
@@ -158,6 +158,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. |
@@ -454,6 +454,18 @@ public class RepositoryManager implements IRepositoryManager { | |||
CommitCache.instance().clear(repositoryName); | |||
} | |||
/** | |||
* 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. | |||
* |