Commit e8ed1d99 authored by Lückemeyer's avatar Lückemeyer
Browse files

cleaned repo handling

No related merge requests found
Showing with 126 additions and 7 deletions
+126 -7
...@@ -31,13 +31,13 @@ import jakarta.servlet.annotation.MultipartConfig; ...@@ -31,13 +31,13 @@ import jakarta.servlet.annotation.MultipartConfig;
public class TaskUpload { public class TaskUpload {
private static final Logger LOG = LogManager.getLogger(TaskUpload.class); private static final Logger LOG = LogManager.getLogger(TaskUpload.class);
private final JGitUtil jGitUtil; private final RepoUtil jGitUtil;
private final Path testTmpPath; private final Path testTmpPath;
private final ExecuteTestUtil executeTestUtil; private final ExecuteTestUtil executeTestUtil;
public TaskUpload( public TaskUpload(
Environment env, Environment env,
JGitUtil jGitUtil, RepoUtil jGitUtil,
ExecuteTestUtil executeTestUtil ExecuteTestUtil executeTestUtil
) { ) {
this.jGitUtil = jGitUtil; this.jGitUtil = jGitUtil;
......
package de.hftstuttgart.dtabackend.rest.v1.unittest; package de.hftstuttgart.dtabackend.rest.v1.unittest;
import de.hftstuttgart.dtabackend.utils.JGitUtil; import de.hftstuttgart.dtabackend.utils.RepoUtil;
import de.hftstuttgart.dtabackend.utils.RegexUtil; import de.hftstuttgart.dtabackend.utils.RegexUtil;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
...@@ -30,10 +30,10 @@ import java.util.regex.Pattern; ...@@ -30,10 +30,10 @@ import java.util.regex.Pattern;
public class UnitTestUpload { public class UnitTestUpload {
private static final Logger LOG = LogManager.getLogger(UnitTestUpload.class); private static final Logger LOG = LogManager.getLogger(UnitTestUpload.class);
private final JGitUtil jGitUtil; private final RepoUtil jGitUtil;
private final String assignmentBasePath; private final String assignmentBasePath;
public UnitTestUpload(Environment env, JGitUtil jGitUtil) { public UnitTestUpload(Environment env, RepoUtil jGitUtil) {
this.jGitUtil = jGitUtil; this.jGitUtil = jGitUtil;
Path p = Paths.get(env.getProperty("data.dir"), env.getProperty("data.dir.test.folder.name")); Path p = Paths.get(env.getProperty("data.dir"), env.getProperty("data.dir.test.folder.name"));
......
...@@ -26,7 +26,7 @@ import java.util.regex.Pattern; ...@@ -26,7 +26,7 @@ import java.util.regex.Pattern;
public class ExecuteTestUtil { public class ExecuteTestUtil {
private static final Logger LOG = LogManager.getLogger(ExecuteTestUtil.class); private static final Logger LOG = LogManager.getLogger(ExecuteTestUtil.class);
private final JGitUtil jGitUtil; private final RepoUtil jGitUtil;
private final DockerUtil dockerUtil; private final DockerUtil dockerUtil;
private final String assignmentBasePath; private final String assignmentBasePath;
private final Path testTmpPathHost; private final Path testTmpPathHost;
...@@ -34,7 +34,7 @@ public class ExecuteTestUtil { ...@@ -34,7 +34,7 @@ public class ExecuteTestUtil {
public ExecuteTestUtil( public ExecuteTestUtil(
Environment env, Environment env,
JGitUtil jGitUtil, RepoUtil jGitUtil,
DockerUtil dockerUtil DockerUtil dockerUtil
) { ) {
this.jGitUtil = jGitUtil; this.jGitUtil = jGitUtil;
......
...@@ -8,17 +8,31 @@ import org.eclipse.jgit.api.errors.GitAPIException; ...@@ -8,17 +8,31 @@ import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.FileSystemUtils; import org.springframework.util.FileSystemUtils;
import org.tmatesoft.svn.core.SVNDepth;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.auth.BasicAuthenticationManager;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
import org.tmatesoft.svn.core.wc.SVNUpdateClient;
import org.tmatesoft.svn.core.wc.SVNWCUtil;
import org.tmatesoft.svn.core.wc2.SvnCheckout;
import org.tmatesoft.svn.core.wc2.SvnOperationFactory;
import org.tmatesoft.svn.core.wc2.SvnTarget;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@Component @Component
public class JGitUtil { public class RepoUtil {
private static final Logger LOG = LogManager.getLogger(JGitUtil.class); private static final Logger LOG = LogManager.getLogger(RepoUtil.class);
public JGitUtil() {} public RepoUtil() {}
public void cloneRepository(Matcher config, String targetPath, String subDir) { public void cloneRepository(Matcher config, String targetPath, String subDir) {
LOG.debug(String.format("cloning repository: %s", config.group(1))); LOG.debug(String.format("cloning repository: %s", config.group(1)));
...@@ -43,6 +57,8 @@ public class JGitUtil { ...@@ -43,6 +57,8 @@ public class JGitUtil {
try { try {
LOG.debug("preparing clone"); LOG.debug("preparing clone");
if (config.group(1).endsWith(".git")) {
CloneCommand cloneCommand = Git.cloneRepository() CloneCommand cloneCommand = Git.cloneRepository()
.setDirectory(checkoutDirectory) .setDirectory(checkoutDirectory)
.setURI(config.group(1)); .setURI(config.group(1));
...@@ -54,6 +70,33 @@ public class JGitUtil { ...@@ -54,6 +70,33 @@ public class JGitUtil {
LOG.debug("cloning..."); LOG.debug("cloning...");
cloneCommand.call().close(); cloneCommand.call().close();
}
else {
URL sourceUrl=new URL(config.group(1));
SVNURL url = SVNURL.create(sourceUrl.getProtocol(), null, sourceUrl.getHost(), sourceUrl.getPort(), sourceUrl.getPath(), false);
SvnOperationFactory operationFactory = new SvnOperationFactory();
SvnCheckout checkout = operationFactory.createCheckout();
checkout.setSingleTarget(SvnTarget.fromFile(new File(targetPath)));
checkout.setSource(SvnTarget.fromURL(url));
String protocol = url.getProtocol();
if (!config.group(2).equals("none") && !config.group(3).equals("none")) {
if (protocol.equals("https")) {
LOG.debug("Setting SVN credentials for HTTPS checkout with username/password");
operationFactory.setAuthenticationManager(new BasicAuthenticationManager(config.group(2), config.group(3)));
}
else if (protocol.equals("svn+ssh")) {
LOG.debug("Setting credentials for SVN+SSH Authentication with username/password");
//ISVNAuthenticationManager authManager = new BasicAuthenticationManager(new SVNAuthentication[] { new SVNSSHAuthentication(username, password, -1, false)});//SVNWCUtil.createDefaultAuthenticationManager(username, password);
ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(config.group(2), config.group(3).toCharArray());
operationFactory.setAuthenticationManager(authManager);
}
}
checkout.run();
LOG.debug("SVN checkout completed successfully.");
}
//if an optional directory parameter was given //if an optional directory parameter was given
if(subDir!="") if(subDir!="")
...@@ -69,5 +112,8 @@ public class JGitUtil { ...@@ -69,5 +112,8 @@ public class JGitUtil {
catch (GitAPIException e) { catch (GitAPIException e) {
LOG.error(String.format("Error while cloning from %s: could not read from Git", config.group(1)), e); LOG.error(String.format("Error while cloning from %s: could not read from Git", config.group(1)), e);
} }
catch (SVNException e) {
LOG.error(String.format("Error while cloning from %s: could not read from Svn", config.group(1)), e);
}
} }
} }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment