From 2e73efcaedea190795ba45ca72f924f697cc296e Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 26 Sep 2014 08:43:09 -0400
Subject: [PATCH] Improve the error message when too many commits are pushed for a proposal
---
src/main/java/com/gitblit/servlet/GitblitContext.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 50 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/gitblit/servlet/GitblitContext.java b/src/main/java/com/gitblit/servlet/GitblitContext.java
index ebe2cc2..64d68e7 100644
--- a/src/main/java/com/gitblit/servlet/GitblitContext.java
+++ b/src/main/java/com/gitblit/servlet/GitblitContext.java
@@ -38,6 +38,7 @@
import com.gitblit.Keys;
import com.gitblit.WebXmlSettings;
import com.gitblit.dagger.DaggerContext;
+import com.gitblit.extensions.LifeCycleListener;
import com.gitblit.manager.IAuthenticationManager;
import com.gitblit.manager.IFederationManager;
import com.gitblit.manager.IGitblit;
@@ -152,7 +153,7 @@
// if the base folder dosen't match the default assume they don't want to use express,
// this allows for other containers to customise the basefolder per context.
String defaultBase = Constants.contextFolder$ + "/WEB-INF/data";
- String base = lookupBaseFolderFromJndi();
+ String base = System.getProperty("GITBLIT_HOME",lookupBaseFolderFromJndi());
if (!StringUtils.isEmpty(System.getenv("OPENSHIFT_DATA_DIR")) && defaultBase.equals(base)) {
// RedHat OpenShift
baseFolder = configureExpress(context, webxmlSettings, contextFolder, runtimeSettings);
@@ -174,6 +175,9 @@
runtime.start();
managers.add(runtime);
+ // create the plugin manager instance but do not start it
+ loadManager(injector, IPluginManager.class);
+
// start all other managers
startManager(injector, INotificationManager.class);
startManager(injector, IUserManager.class);
@@ -191,6 +195,15 @@
logger.info("");
logger.info("All managers started.");
logger.info("");
+
+ IPluginManager pluginManager = injector.get(IPluginManager.class);
+ for (LifeCycleListener listener : pluginManager.getExtensions(LifeCycleListener.class)) {
+ try {
+ listener.onStartup();
+ } catch (Throwable t) {
+ logger.error(null, t);
+ }
+ }
}
private String lookupBaseFolderFromJndi() {
@@ -205,9 +218,14 @@
return null;
}
- protected <X extends IManager> X startManager(ObjectGraph injector, Class<X> clazz) {
- logManager(clazz);
+ protected <X extends IManager> X loadManager(ObjectGraph injector, Class<X> clazz) {
X x = injector.get(clazz);
+ return x;
+ }
+
+ protected <X extends IManager> X startManager(ObjectGraph injector, Class<X> clazz) {
+ X x = loadManager(injector, clazz);
+ logManager(clazz);
x.start();
managers.add(x);
return x;
@@ -225,6 +243,16 @@
@Override
protected void destroyContext(ServletContext context) {
logger.info("Gitblit context destroyed by servlet container.");
+
+ IPluginManager pluginManager = getManager(IPluginManager.class);
+ for (LifeCycleListener listener : pluginManager.getExtensions(LifeCycleListener.class)) {
+ try {
+ listener.onShutdown();
+ } catch (Throwable t) {
+ logger.error(null, t);
+ }
+ }
+
for (IManager manager : managers) {
logger.debug("stopping {}", manager.getClass().getSimpleName());
manager.stop();
@@ -289,9 +317,9 @@
logger.error("");
}
- String baseFromJndi = lookupBaseFolderFromJndi();
- if (!StringUtils.isEmpty(baseFromJndi)) {
- path = baseFromJndi;
+ String externalBase = System.getProperty("GITBLIT_HOME", lookupBaseFolderFromJndi());
+ if (!StringUtils.isEmpty(externalBase)) {
+ path = externalBase;
}
File base = com.gitblit.utils.FileUtils.resolveParameter(Constants.contextFolder$, contextFolder, path);
@@ -352,6 +380,22 @@
}
}
+ // Copy the included gitignore files to the configured gitignore folder
+ String gitignorePath = webxmlSettings.getString(Keys.git.gitignoreFolder, "gitignore");
+ File localGitignores = com.gitblit.utils.FileUtils.resolveParameter(Constants.baseFolder$, base, gitignorePath);
+ if (!localGitignores.exists()) {
+ File warGitignores = new File(contextFolder, "/WEB-INF/data/gitignore");
+ if (!warGitignores.equals(localGitignores)) {
+ try {
+ com.gitblit.utils.FileUtils.copy(localGitignores, warGitignores.listFiles());
+ } catch (IOException e) {
+ logger.error(MessageFormat.format(
+ "Failed to copy included .gitignore files from {0} to {1}",
+ warGitignores, localGitignores));
+ }
+ }
+ }
+
// merge the WebXmlSettings into the runtime settings (for backwards-compatibilty)
runtimeSettings.merge(webxmlSettings);
--
Gitblit v1.9.1