From ddcebbd982d81dabf8cb1c89f60f9b876a23b58c Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 04 Sep 2014 13:32:44 -0400
Subject: [PATCH] Merged #149 "Repo creation with initial commit fails if user does not have an email address"

---
 src/main/java/com/gitblit/servlet/GitblitContext.java |   30 +++++++++++++++++++++++++++---
 1 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/gitblit/servlet/GitblitContext.java b/src/main/java/com/gitblit/servlet/GitblitContext.java
index 110e553..fcc702b 100644
--- a/src/main/java/com/gitblit/servlet/GitblitContext.java
+++ b/src/main/java/com/gitblit/servlet/GitblitContext.java
@@ -153,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 +174,9 @@
 		runtime.getStatus().servletContainer = context.getServerInfo();
 		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);
@@ -215,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;
@@ -372,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