James Moger
2014-09-05 884fd0d19330ecd8fa292d0bbfae3808bc34b97e
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;
@@ -44,8 +45,6 @@
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import javax.inject.Inject;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.RepositoryCache;
import org.eclipse.jgit.lib.RepositoryCache.FileKey;
@@ -54,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;
@@ -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;
@@ -139,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
@@ -1898,6 +1901,18 @@
      } catch (IllegalArgumentException e) {
         logger.error("Failed to configure JGit parameters!", e);
      }
      try {
         // issue-486/ticket-151: UTF-9 & UTF-18
         Field field = RawParseUtils.class.getDeclaredField("encodingAliases");
         field.setAccessible(true);
         Map<String, Charset> encodingAliases = (Map<String, Charset>) field.get(null);
         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");
      } catch (Throwable t) {
         logger.error("Failed to inject UTF-9 & UTF-18 encoding aliases into JGit", t);
      }
   }
   protected void configureCommitCache() {
@@ -1937,21 +1952,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("");
      }
   }
}