Merged 2.0.0-m3 into feature/global_config_v2_endpoint

This commit is contained in:
Johannes Schnatterer
2018-08-01 10:30:38 +02:00
358 changed files with 24149 additions and 21316 deletions

View File

@@ -40,24 +40,21 @@ import org.eclipse.jgit.transport.PostReceiveHook;
import org.eclipse.jgit.transport.PreReceiveHook;
import org.eclipse.jgit.transport.ReceiveCommand;
import org.eclipse.jgit.transport.ReceivePack;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sonia.scm.repository.GitRepositoryHandler;
import sonia.scm.repository.RepositoryHookType;
import sonia.scm.repository.RepositoryUtil;
import sonia.scm.repository.spi.GitHookContextProvider;
import sonia.scm.repository.spi.HookEventFacade;
//~--- JDK imports ------------------------------------------------------------
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
//~--- JDK imports ------------------------------------------------------------
/**
*
* @author Sebastian Sdorra
@@ -131,15 +128,14 @@ public class GitReceiveHook implements PreReceiveHook, PostReceiveHook
try
{
Repository repository = rpack.getRepository();
String repositoryName = resolveRepositoryName(repository);
String id = resolveRepositoryId(repository);
logger.trace("resolved repository name to {}", repositoryName);
logger.trace("resolved repository to id {}", id);
GitHookContextProvider context = new GitHookContextProvider(rpack,
receiveCommands);
hookEventFacade.handle(GitRepositoryHandler.TYPE_NAME,
repositoryName).fireHookEvent(type, context);
hookEventFacade.handle(id).fireHookEvent(type, context);
}
catch (Exception ex)
@@ -191,7 +187,7 @@ public class GitReceiveHook implements PreReceiveHook, PostReceiveHook
*
* @throws IOException
*/
private String resolveRepositoryName(Repository repository) throws IOException
private String resolveRepositoryId(Repository repository) throws IOException
{
File directory;
@@ -204,7 +200,7 @@ public class GitReceiveHook implements PreReceiveHook, PostReceiveHook
directory = repository.getWorkTree();
}
return RepositoryUtil.getRepositoryName(handler, directory);
return RepositoryUtil.getRepositoryId(handler, directory);
}
//~--- fields ---------------------------------------------------------------

View File

@@ -36,8 +36,8 @@ package sonia.scm.web;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.inject.Inject;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.RepositoryCache;
@@ -46,19 +46,17 @@ import org.eclipse.jgit.transport.resolver.RepositoryResolver;
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;
import sonia.scm.repository.RepositoryProvider;
//~--- JDK imports ------------------------------------------------------------
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -72,17 +70,11 @@ public class GitRepositoryResolver implements RepositoryResolver<HttpServletRequ
//~--- constructors ---------------------------------------------------------
/**
* Constructs ...
*
*
*
* @param handler
*/
@Inject
public GitRepositoryResolver(GitRepositoryHandler handler)
public GitRepositoryResolver(GitRepositoryHandler handler, RepositoryProvider repositoryProvider)
{
this.handler = handler;
this.repositoryProvider = repositoryProvider;
}
//~--- methods --------------------------------------------------------------
@@ -101,26 +93,27 @@ public class GitRepositoryResolver implements RepositoryResolver<HttpServletRequ
* @throws ServiceNotEnabledException
*/
@Override
public Repository open(HttpServletRequest request, String repositoryName)
throws RepositoryNotFoundException, ServiceNotAuthorizedException,
ServiceNotEnabledException
public Repository open(HttpServletRequest request, String repositoryName) throws RepositoryNotFoundException, ServiceNotEnabledException
{
Repository repository = null;
try
{
sonia.scm.repository.Repository repo = repositoryProvider.get();
Preconditions.checkState(repo != null, "repository to handle not found");
Preconditions.checkState(GitRepositoryHandler.TYPE_NAME.equals(repo.getType()), "got a non git repository in GitRepositoryResolver of type " + repo.getType());
GitConfig config = handler.getConfig();
if (config.isValid())
{
File gitdir = findRepository(config.getRepositoryDirectory(), repositoryName);
File gitdir = findRepository(config.getRepositoryDirectory(), repo.getId());
if (gitdir == null) {
throw new RepositoryNotFoundException(repositoryName);
}
logger.debug("try to open git repository at {}", gitdir);
repository = RepositoryCache.open(FileKey.lenient(gitdir, FS.DETECTED), true);
return RepositoryCache.open(FileKey.lenient(gitdir, FS.DETECTED), true);
}
else
{
@@ -136,10 +129,8 @@ public class GitRepositoryResolver implements RepositoryResolver<HttpServletRequ
{
throw new RepositoryNotFoundException(repositoryName, e);
}
return repository;
}
@VisibleForTesting
File findRepository(File parentDirectory, String repositoryName) {
File repositoryDirectory = new File(parentDirectory, repositoryName);
@@ -168,6 +159,6 @@ public class GitRepositoryResolver implements RepositoryResolver<HttpServletRequ
//~--- fields ---------------------------------------------------------------
/** Field description */
private GitRepositoryHandler handler;
private final GitRepositoryHandler handler;
private final RepositoryProvider repositoryProvider;
}

View File

@@ -56,9 +56,6 @@ import sonia.scm.repository.api.RepositoryServiceFactory;
import sonia.scm.template.Template;
import sonia.scm.template.TemplateEngine;
import sonia.scm.template.TemplateEngineFactory;
import sonia.scm.url.RepositoryUrlProvider;
import sonia.scm.url.UrlProvider;
import sonia.scm.url.UrlProviderFactory;
import sonia.scm.util.HttpUtil;
import sonia.scm.util.IOUtil;
import sonia.scm.util.Util;
@@ -137,21 +134,14 @@ public class GitRepositoryViewer
logger.trace("render git repository quick view with base url {}", baseUrl);
UrlProvider urlProvider = UrlProviderFactory.createUrlProvider(baseUrl,
UrlProviderFactory.TYPE_WUI);
response.setContentType(MIMETYPE_HTML);
RepositoryUrlProvider rup = urlProvider.getRepositoryUrlProvider();
TemplateEngine engine = templateEngineFactory.getDefaultEngine();
Template template = engine.getTemplate(RESOURCE_GITINDEX);
//J-
ImmutableMap<String,Object> env = ImmutableMap.of(
"repository", repository,
"branches", createBranchesModel(repository),
"commitViewLink", rup.getChangesetUrl(repository.getId(), 0, 20),
"sourceViewLink", rup.getBrowseUrl(repository.getId(), null, null)
"branches", createBranchesModel(repository)
);
//J+

View File

@@ -32,7 +32,7 @@
package sonia.scm.web.lfs;
import com.google.common.eventbus.Subscribe;
import com.github.legman.Subscribe;
import com.google.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;