Improve check that Git repository exists
This commit is contained in:
parent
6e5c6eee6c
commit
a6a29a6ca7
@ -203,7 +203,7 @@ public class DefaultGitRepositoryService implements GitRepositoryService {
|
|||||||
GitRepository gitRepository = Optional.ofNullable(repositories.get(tenantId))
|
GitRepository gitRepository = Optional.ofNullable(repositories.get(tenantId))
|
||||||
.orElseThrow(() -> new IllegalStateException("Repository is not initialized"));
|
.orElseThrow(() -> new IllegalStateException("Repository is not initialized"));
|
||||||
|
|
||||||
if (!Files.exists(Path.of(gitRepository.getDirectory()))) {
|
if (!GitRepository.exists(gitRepository.getDirectory())) {
|
||||||
try {
|
try {
|
||||||
return openOrCloneRepository(tenantId, gitRepository.getSettings(), false);
|
return openOrCloneRepository(tenantId, gitRepository.getSettings(), false);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -285,12 +285,13 @@ public class DefaultGitRepositoryService implements GitRepositoryService {
|
|||||||
Path repositoryDirectory = Path.of(repositoriesFolder, settings.isLocalOnly() ? "local_" + settings.getRepositoryUri() : tenantId.getId().toString());
|
Path repositoryDirectory = Path.of(repositoriesFolder, settings.isLocalOnly() ? "local_" + settings.getRepositoryUri() : tenantId.getId().toString());
|
||||||
|
|
||||||
GitRepository repository;
|
GitRepository repository;
|
||||||
if (Files.exists(repositoryDirectory)) {
|
if (GitRepository.exists(repositoryDirectory.toString())) {
|
||||||
repository = GitRepository.open(repositoryDirectory.toFile(), settings);
|
repository = GitRepository.open(repositoryDirectory.toFile(), settings);
|
||||||
if (fetch) {
|
if (fetch) {
|
||||||
repository.fetch();
|
repository.fetch();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
FileUtils.deleteDirectory(repositoryDirectory.toFile());
|
||||||
Files.createDirectories(repositoryDirectory);
|
Files.createDirectories(repositoryDirectory);
|
||||||
if (settings.isLocalOnly()) {
|
if (settings.isLocalOnly()) {
|
||||||
repository = GitRepository.create(settings, repositoryDirectory.toFile());
|
repository = GitRepository.create(settings, repositoryDirectory.toFile());
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import com.google.common.collect.Streams;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@ -75,6 +76,7 @@ import java.io.IOException;
|
|||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
import java.security.KeyPair;
|
import java.security.KeyPair;
|
||||||
import java.security.PublicKey;
|
import java.security.PublicKey;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -409,6 +411,12 @@ public class GitRepository {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public static boolean exists(String directory) {
|
||||||
|
File gitDirectory = Path.of(directory, ".git").toFile();
|
||||||
|
return FileUtils.isDirectory(gitDirectory) && !FileUtils.isEmptyDirectory(gitDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
private <C extends GitCommand<T>, T> T execute(C command) throws GitAPIException {
|
private <C extends GitCommand<T>, T> T execute(C command) throws GitAPIException {
|
||||||
if (command instanceof TransportCommand transportCommand && authHandler != null) {
|
if (command instanceof TransportCommand transportCommand && authHandler != null) {
|
||||||
authHandler.configureCommand(transportCommand);
|
authHandler.configureCommand(transportCommand);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user