From 65bd982b887aeed74ac5848c8caebfdc8f41c592 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Fri, 17 Jun 2011 13:14:45 +0200 Subject: [PATCH] fix a bug with gitconfig reference, see #29 --- .../sonia/scm/web/GitRepositoryResolver.java | 41 ++++++++++++++----- .../java/sonia/scm/web/ScmGitServlet.java | 2 +- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryResolver.java b/plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryResolver.java index 24e6e3b5c4..4de040b992 100644 --- a/plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryResolver.java +++ b/plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitRepositoryResolver.java @@ -44,7 +44,11 @@ import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException; import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; import org.eclipse.jgit.util.FS; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import sonia.scm.repository.GitConfig; +import sonia.scm.repository.GitRepositoryHandler; //~--- JDK imports ------------------------------------------------------------ @@ -61,15 +65,22 @@ public class GitRepositoryResolver implements RepositoryResolver { + /** the logger for GitRepositoryResolver */ + private static final Logger logger = + LoggerFactory.getLogger(GitRepositoryResolver.class); + + //~--- constructors --------------------------------------------------------- + /** * Constructs ... * * - * @param config + * + * @param handler */ - public GitRepositoryResolver(GitConfig config) + public GitRepositoryResolver(GitRepositoryHandler handler) { - this.config = config; + this.handler = handler; } //~--- get methods ---------------------------------------------------------- @@ -151,15 +162,25 @@ public class GitRepositoryResolver try { - File gitdir = new File(config.getRepositoryDirectory(), repositoryName); + GitConfig config = handler.getConfig(); - if (!gitdir.exists()) + if (config.isValid()) { - throw new RepositoryNotFoundException(repositoryName); - } + File gitdir = new File(config.getRepositoryDirectory(), repositoryName); - repository = RepositoryCache.open(FileKey.lenient(gitdir, FS.DETECTED), - true); + if (logger.isDebugEnabled()) + { + logger.debug("try to open git repository at {}", gitdir); + } + + if (!gitdir.exists()) + { + throw new RepositoryNotFoundException(repositoryName); + } + + repository = RepositoryCache.open(FileKey.lenient(gitdir, FS.DETECTED), + true); + } } catch (RuntimeException e) { @@ -176,5 +197,5 @@ public class GitRepositoryResolver //~--- fields --------------------------------------------------------------- /** Field description */ - private GitConfig config; + private GitRepositoryHandler handler; } diff --git a/plugins/scm-git-plugin/src/main/java/sonia/scm/web/ScmGitServlet.java b/plugins/scm-git-plugin/src/main/java/sonia/scm/web/ScmGitServlet.java index 89d769cd53..1efac88ef7 100644 --- a/plugins/scm-git-plugin/src/main/java/sonia/scm/web/ScmGitServlet.java +++ b/plugins/scm-git-plugin/src/main/java/sonia/scm/web/ScmGitServlet.java @@ -86,7 +86,7 @@ public class ScmGitServlet extends GitServlet @Inject public ScmGitServlet(GitRepositoryHandler handler) { - resolver = new GitRepositoryResolver(handler.getConfig()); + resolver = new GitRepositoryResolver(handler); setRepositoryResolver(resolver); }