From a413ed7c41880cec3c224501dd2ed874fdbeef17 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sun, 22 Nov 2015 14:53:36 -0500
Subject: [PATCH] Reset build identifiers for next point release cycle
---
src/main/java/com/gitblit/manager/RepositoryManager.java | 76 +++++++++++++++++++++++++++++++------
1 files changed, 63 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/gitblit/manager/RepositoryManager.java b/src/main/java/com/gitblit/manager/RepositoryManager.java
index 24f3573..e2e4de6 100644
--- a/src/main/java/com/gitblit/manager/RepositoryManager.java
+++ b/src/main/java/com/gitblit/manager/RepositoryManager.java
@@ -21,6 +21,7 @@
import java.lang.reflect.Field;
import java.net.URI;
import java.net.URISyntaxException;
+import java.nio.charset.Charset;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -52,6 +53,7 @@
import org.eclipse.jgit.storage.file.WindowCacheConfig;
import org.eclipse.jgit.util.FS;
import org.eclipse.jgit.util.FileUtils;
+import org.eclipse.jgit.util.RawParseUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -122,7 +124,7 @@
private final IUserManager userManager;
- private final File repositoriesFolder;
+ private File repositoriesFolder;
private LuceneService luceneExecutor;
@@ -140,11 +142,11 @@
this.runtimeManager = runtimeManager;
this.pluginManager = pluginManager;
this.userManager = userManager;
- this.repositoriesFolder = runtimeManager.getFileOrFolder(Keys.git.repositoriesFolder, "${baseFolder}/git");
}
@Override
public RepositoryManager start() {
+ repositoriesFolder = runtimeManager.getFileOrFolder(Keys.git.repositoriesFolder, "${baseFolder}/git");
logger.info("Repositories folder : {}", repositoriesFolder.getAbsolutePath());
// initialize utilities
@@ -627,6 +629,27 @@
}
/**
+ * Returns the list of all repository models.
+ *
+ * @return list of all repository models
+ */
+ @Override
+ public List<RepositoryModel> getRepositoryModels() {
+ long methodStart = System.currentTimeMillis();
+ List<String> list = getRepositoryList();
+ List<RepositoryModel> repositories = new ArrayList<RepositoryModel>();
+ for (String repo : list) {
+ RepositoryModel model = getRepositoryModel(repo);
+ if (model != null) {
+ repositories.add(model);
+ }
+ }
+ long duration = System.currentTimeMillis() - methodStart;
+ logger.info(MessageFormat.format("{0} repository models loaded in {1} msecs", duration));
+ return repositories;
+ }
+
+ /**
* Returns the list of repository models that are accessible to the user.
*
* @param user
@@ -1090,9 +1113,16 @@
// find the root, cached
String key = getRepositoryKey(repository);
RepositoryModel model = repositoryListCache.get(key);
+ if (model == null) {
+ return null;
+ }
+
while (model.originRepository != null) {
String originKey = getRepositoryKey(model.originRepository);
model = repositoryListCache.get(originKey);
+ if (model == null) {
+ return null;
+ }
}
ForkModel root = getForkModelFromCache(model.name);
return root;
@@ -1324,7 +1354,7 @@
}
/**
- * Creates/updates the repository model keyed by reopsitoryName. Saves all
+ * Creates/updates the repository model keyed by repositoryName. Saves all
* repository settings in .git/config. This method allows for renaming
* repositories and will update user access permissions accordingly.
*
@@ -1352,6 +1382,7 @@
repository.name = repository.name.substring(projectPath.length() + 1);
}
}
+ boolean isRename = false;
if (isCreate) {
// ensure created repository name ends with .git
if (!repository.name.toLowerCase().endsWith(org.eclipse.jgit.lib.Constants.DOT_GIT_EXT)) {
@@ -1368,7 +1399,8 @@
r = JGitUtils.createRepository(repositoriesFolder, repository.name, shared);
} else {
// rename repository
- if (!repositoryName.equalsIgnoreCase(repository.name)) {
+ isRename = !repositoryName.equalsIgnoreCase(repository.name);
+ if (isRename) {
if (!repository.name.toLowerCase().endsWith(
org.eclipse.jgit.lib.Constants.DOT_GIT_EXT)) {
repository.name += org.eclipse.jgit.lib.Constants.DOT_GIT_EXT;
@@ -1486,6 +1518,14 @@
listener.onCreation(repository);
} catch (Throwable t) {
logger.error(String.format("failed to call plugin onCreation %s", repositoryName), t);
+ }
+ }
+ } else if (isRename && pluginManager != null) {
+ for (RepositoryLifeCycleListener listener : pluginManager.getExtensions(RepositoryLifeCycleListener.class)) {
+ try {
+ listener.onRename(repositoryName, repository);
+ } catch (Throwable t) {
+ logger.error(String.format("failed to call plugin onRename %s", repositoryName), t);
}
}
}
@@ -1827,9 +1867,10 @@
protected void configureLuceneIndexing() {
luceneExecutor = new LuceneService(settings, this);
- int period = 2;
- scheduledExecutor.scheduleAtFixedRate(luceneExecutor, 1, period, TimeUnit.MINUTES);
- logger.info("Lucene will process indexed branches every {} minutes.", period);
+ String frequency = settings.getString(Keys.web.luceneFrequency, "2 mins");
+ int mins = TimeUtils.convertFrequencyToMinutes(frequency, 2);
+ scheduledExecutor.scheduleAtFixedRate(luceneExecutor, 1, mins, TimeUnit.MINUTES);
+ logger.info("Lucene will process indexed branches every {} minutes.", mins);
}
protected void configureGarbageCollector() {
@@ -1864,10 +1905,7 @@
protected void configureMirrorExecutor() {
mirrorExecutor = new MirrorService(settings, this);
if (mirrorExecutor.isReady()) {
- int mins = TimeUtils.convertFrequencyToMinutes(settings.getString(Keys.git.mirrorPeriod, "30 mins"));
- if (mins < 5) {
- mins = 5;
- }
+ int mins = TimeUtils.convertFrequencyToMinutes(settings.getString(Keys.git.mirrorPeriod, "30 mins"), 5);
int delay = 1;
scheduledExecutor.scheduleAtFixedRate(mirrorExecutor, delay, mins, TimeUnit.MINUTES);
logger.info("Mirror service will fetch updates every {} minutes.", mins);
@@ -1885,7 +1923,6 @@
cfg.setPackedGitLimit(settings.getFilesize(Keys.git.packedGitLimit, cfg.getPackedGitLimit()));
cfg.setDeltaBaseCacheLimit(settings.getFilesize(Keys.git.deltaBaseCacheLimit, cfg.getDeltaBaseCacheLimit()));
cfg.setPackedGitOpenFiles(settings.getFilesize(Keys.git.packedGitOpenFiles, cfg.getPackedGitOpenFiles()));
- cfg.setStreamFileThreshold(settings.getFilesize(Keys.git.streamFileThreshold, cfg.getStreamFileThreshold()));
cfg.setPackedGitMMAP(settings.getBoolean(Keys.git.packedGitMmap, cfg.isPackedGitMMAP()));
try {
@@ -1894,11 +1931,24 @@
logger.debug(MessageFormat.format("{0} = {1,number,0}", Keys.git.packedGitLimit, cfg.getPackedGitLimit()));
logger.debug(MessageFormat.format("{0} = {1,number,0}", Keys.git.deltaBaseCacheLimit, cfg.getDeltaBaseCacheLimit()));
logger.debug(MessageFormat.format("{0} = {1,number,0}", Keys.git.packedGitOpenFiles, cfg.getPackedGitOpenFiles()));
- logger.debug(MessageFormat.format("{0} = {1,number,0}", Keys.git.streamFileThreshold, cfg.getStreamFileThreshold()));
logger.debug(MessageFormat.format("{0} = {1}", Keys.git.packedGitMmap, cfg.isPackedGitMMAP()));
} catch (IllegalArgumentException e) {
logger.error("Failed to configure JGit parameters!", e);
}
+
+ try {
+ // issue-486/ticket-151: UTF-9 & UTF-18
+ // issue-560/ticket-237: 'UTF8'
+ Field field = RawParseUtils.class.getDeclaredField("encodingAliases");
+ field.setAccessible(true);
+ Map<String, Charset> encodingAliases = (Map<String, Charset>) field.get(null);
+ encodingAliases.put("'utf8'", RawParseUtils.UTF8_CHARSET);
+ encodingAliases.put("utf-9", RawParseUtils.UTF8_CHARSET);
+ encodingAliases.put("utf-18", RawParseUtils.UTF8_CHARSET);
+ logger.info("Alias 'UTF8', UTF-9 & UTF-18 encodings as UTF-8 in JGit");
+ } catch (Throwable t) {
+ logger.error("Failed to inject UTF-9 & UTF-18 encoding aliases into JGit", t);
+ }
}
protected void configureCommitCache() {
--
Gitblit v1.9.1