From 2e141ff31dedaa6dfefc4af47eda803d8dbb3eff Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 01 Sep 2015 08:49:02 -0400
Subject: [PATCH] Fix #909: Add missing SLFJ dependencies in Manager build
---
src/main/java/com/gitblit/manager/RepositoryManager.java | 54 +++++++++++++++++++++++++++++++++---------------------
1 files changed, 33 insertions(+), 21 deletions(-)
diff --git a/src/main/java/com/gitblit/manager/RepositoryManager.java b/src/main/java/com/gitblit/manager/RepositoryManager.java
index 9944130..027ba23 100644
--- a/src/main/java/com/gitblit/manager/RepositoryManager.java
+++ b/src/main/java/com/gitblit/manager/RepositoryManager.java
@@ -91,6 +91,8 @@
import com.gitblit.utils.ObjectCache;
import com.gitblit.utils.StringUtils;
import com.gitblit.utils.TimeUtils;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
/**
* Repository manager creates, updates, deletes and caches git repositories. It
@@ -99,6 +101,7 @@
* @author James Moger
*
*/
+@Singleton
public class RepositoryManager implements IRepositoryManager {
private final Logger logger = LoggerFactory.getLogger(getClass());
@@ -121,7 +124,7 @@
private final IUserManager userManager;
- private final File repositoriesFolder;
+ private File repositoriesFolder;
private LuceneService luceneExecutor;
@@ -129,6 +132,7 @@
private MirrorService mirrorExecutor;
+ @Inject
public RepositoryManager(
IRuntimeManager runtimeManager,
IPluginManager pluginManager,
@@ -138,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
@@ -1343,7 +1347,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.
*
@@ -1371,6 +1375,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)) {
@@ -1387,7 +1392,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;
@@ -1505,6 +1511,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);
}
}
}
@@ -1902,7 +1916,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 {
@@ -1911,7 +1924,6 @@
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);
@@ -1919,12 +1931,14 @@
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 UTF-9 & UTF-18 encodings as UTF-8 in JGit");
+ 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);
}
@@ -1967,21 +1981,19 @@
}
protected void confirmWriteAccess() {
- if (runtimeManager.isServingRepositories()) {
- try {
- if (!getRepositoriesFolder().exists()) {
- getRepositoriesFolder().mkdirs();
- }
- File file = File.createTempFile(".test-", ".txt", getRepositoriesFolder());
- file.delete();
- } catch (Exception e) {
- logger.error("");
- logger.error(Constants.BORDER2);
- logger.error("Please check filesystem permissions!");
- logger.error("FAILED TO WRITE TO REPOSITORIES FOLDER!!", e);
- logger.error(Constants.BORDER2);
- logger.error("");
+ try {
+ if (!getRepositoriesFolder().exists()) {
+ getRepositoriesFolder().mkdirs();
}
+ File file = File.createTempFile(".test-", ".txt", getRepositoriesFolder());
+ file.delete();
+ } catch (Exception e) {
+ logger.error("");
+ logger.error(Constants.BORDER2);
+ logger.error("Please check filesystem permissions!");
+ logger.error("FAILED TO WRITE TO REPOSITORIES FOLDER!!", e);
+ logger.error(Constants.BORDER2);
+ logger.error("");
}
}
}
--
Gitblit v1.9.1