From 8aabe7e6e6f0def05f0af49e6c538d6f65df1395 Mon Sep 17 00:00:00 2001 From: Gero Lueckemeyer <gero.lueckemeyer@hft-stuttgart.de> Date: Tue, 30 Jan 2024 10:25:41 +0100 Subject: [PATCH] added solution idea comments for issue #8 --- .../dtabackend/utils/JGitUtil.java | 128 ++++++++++-------- 1 file changed, 75 insertions(+), 53 deletions(-) diff --git a/src/main/java/de/hftstuttgart/dtabackend/utils/JGitUtil.java b/src/main/java/de/hftstuttgart/dtabackend/utils/JGitUtil.java index 0a7667f..1407721 100644 --- a/src/main/java/de/hftstuttgart/dtabackend/utils/JGitUtil.java +++ b/src/main/java/de/hftstuttgart/dtabackend/utils/JGitUtil.java @@ -1,53 +1,75 @@ -package de.hftstuttgart.dtabackend.utils; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.eclipse.jgit.api.CloneCommand; -import org.eclipse.jgit.api.Git; -import org.eclipse.jgit.api.errors.GitAPIException; -import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; -import org.springframework.stereotype.Component; -import org.springframework.util.FileSystemUtils; - -import java.io.File; -import java.util.regex.Matcher; - -@Component -public class JGitUtil { - - private static final Logger LOG = LogManager.getLogger(JGitUtil.class); - - public JGitUtil() {} - - public void cloneRepository(Matcher config, String targetPath) { - LOG.debug(String.format("cloning repository: %s", config.group(1))); - - File targetDirectory = new File(targetPath); - if (targetDirectory.exists()) { - LOG.debug("clone target directory existing yet, deleting now"); - FileSystemUtils.deleteRecursively(targetDirectory); - } - - try { - LOG.debug("preparing clone"); - CloneCommand cloneCommand = Git.cloneRepository() - .setDirectory(targetDirectory) - .setURI(config.group(1)); - - if (!config.group(2).equals("none") && !config.group(3).equals("none")) { - LOG.debug("setting credentials"); - cloneCommand.setCredentialsProvider( - new UsernamePasswordCredentialsProvider(config.group(2), config.group(3))); - } - - LOG.debug("cloning..."); - cloneCommand.call() - .close(); - } - catch (GitAPIException e) { - LOG.error(String.format("Error while cloning from %s", config.group(1)), e); - } - - LOG.debug(String.format("cloned from %s to %s", config.group(1), targetDirectory)); - } -} +package de.hftstuttgart.dtabackend.utils; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.eclipse.jgit.api.CloneCommand; +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; +import org.springframework.stereotype.Component; +import org.springframework.util.FileSystemUtils; + +import java.io.File; +import java.util.regex.Matcher; + +@Component +public class JGitUtil { + + private static final Logger LOG = LogManager.getLogger(JGitUtil.class); + + public JGitUtil() {} + + public void cloneRepository(Matcher config, String targetPath) { + LOG.debug(String.format("cloning repository: %s", config.group(1))); + + File targetDirectory = new File(targetPath); + if (targetDirectory.exists()) { + LOG.debug("clone target directory existing yet, deleting now"); + FileSystemUtils.deleteRecursively(targetDirectory); + } + + //create companion checkout dir "targetPath"+"_checkout" + File checkoutDirectory = new File(targetPath+"_checkout"); + if (targetDirectory.exists()) { + LOG.debug("clone checkout directory existing yet, deleting now"); + FileSystemUtils.deleteRecursively(checkoutDirectory); + } + + try { + //check group(1) for possible directory + //if(!config.group(1).endsWith(".git")) + //cut off the directory part + //pos=instr(".git/") + //cloneURI=config.group(1).substr(1, pos+3) + //else + //cloneURI=config.group(1) + LOG.debug("preparing clone"); + CloneCommand cloneCommand = Git.cloneRepository() + .setDirectory(checkoutDirectory) + //.setURI(cloneURI) + .setURI(config.group(1)); + + if (!config.group(2).equals("none") && !config.group(3).equals("none")) { + LOG.debug("setting credentials"); + cloneCommand.setCredentialsProvider( + new UsernamePasswordCredentialsProvider(config.group(2), config.group(3))); + } + + LOG.debug("cloning..."); + cloneCommand.call() + .close(); + + //copy appropriate path from checkout directory to target directory + //if(!config.group(1).endsWith(".git")) + //copy checkout+config.group(1).substr(pos+4) to target directory + //else + //copy checkout directory to target directory directly + + } + catch (GitAPIException e) { + LOG.error(String.format("Error while cloning from %s", config.group(1)), e); + } + + LOG.debug(String.format("cloned from %s to %s", config.group(1), targetDirectory)); + } +} -- GitLab