@Override public void run() { try { final Repository repository = openRepository(repositoryName); if (repository != null) { final JGitFileSystem fileSystem = repositoryResolver.resolveFileSystem(repository); if (fileSystemAuthorizer.authorize(fileSystem, user)) { execute(user, repository, in, out, err, fileSystem); } else { err.write("Invalid credentials.".getBytes()); } } else { err.write("Can't resolve repository name.".getBytes()); } } catch (final Throwable ignored) { } if (callback != null) { callback.onExit(0); } }
private Repository openRepository(String name) throws ServiceMayNotContinueException { // Assume any attempt to use \ was by a Windows client // and correct to the more typical / used in Git URIs. // name = name.replace('\\', '/'); // git://thishost/path should always be name="/path" here // if (!name.startsWith("/")) { return null; } try { return repositoryResolver.open(this, name.substring(1)); } catch (RepositoryNotFoundException e) { // null signals it "wasn't found", which is all that is suitable // for the remote client to know. return null; } catch (ServiceNotAuthorizedException e) { // null signals it "wasn't found", which is all that is suitable // for the remote client to know. return null; } catch (ServiceNotEnabledException e) { // null signals it "wasn't found", which is all that is suitable // for the remote client to know. return null; } }
config.getSshAlgorithm(), receivePackFactory, new RepositoryResolverImpl<>(), executorService, config.getGitSshCiphers(),
void buildAndStartDaemon() { if (daemonService == null || !daemonService.isRunning()) { daemonService = new Daemon(new InetSocketAddress(config.getDaemonHostAddr(), config.getDaemonPort()), new ExecutorWrapper(executorService), executorService, config.isEnableKetch() ? leaders : null); daemonService.setRepositoryResolver(new RepositoryResolverImpl<>()); try { daemonService.start(); } catch (java.io.IOException e) { throw new IOException(e); } } }
@Test public void resolveByRepositoryTest() { JGitFileSystem fsSimpleName = ((JGitFileSystemProxy) provider.newFileSystem(URI.create("git://repo"), EMPTY_ENV)).getRealJGitFileSystem(); JGitFileSystemProvider.RepositoryResolverImpl<Object> objectRepositoryResolver = provider.new RepositoryResolverImpl<>(); assertEquals(fsSimpleName, objectRepositoryResolver.resolveFileSystem(fsSimpleName.getGit().getRepository())); JGitFileSystem fsComposedName1 = ((JGitFileSystemProxy) provider.newFileSystem(URI.create("git://user1/dora"), EMPTY_ENV)).getRealJGitFileSystem(); assertEquals(fsComposedName1, objectRepositoryResolver.resolveFileSystem(fsComposedName1.getGit().getRepository())); }
@Test public void resolveByRepositoryTest() { JGitFileSystem fsSimpleName = ((JGitFileSystemProxy) provider.newFileSystem(URI.create("git://repo"), EMPTY_ENV)).getRealJGitFileSystem(); JGitFileSystemProvider.RepositoryResolverImpl<Object> objectRepositoryResolver = provider.new RepositoryResolverImpl<>(); assertEquals(fsSimpleName, objectRepositoryResolver.resolveFileSystem(fsSimpleName.getGit().getRepository())); JGitFileSystem fsComposedName1 = ((JGitFileSystemProxy) provider.newFileSystem(URI.create("git://user1/dora"), EMPTY_ENV)).getRealJGitFileSystem(); assertEquals(fsComposedName1, objectRepositoryResolver.resolveFileSystem(fsComposedName1.getGit().getRepository())); }