clone repo if tmp directory was deleted
This commit is contained in:
parent
2a9afc585d
commit
2e216242f2
@ -157,7 +157,7 @@ public class DefaultGitRepositoryService implements GitRepositoryService {
|
||||
|
||||
@Override
|
||||
public void fetch(TenantId tenantId) throws GitAPIException {
|
||||
var repository = repositories.get(tenantId);
|
||||
var repository = checkRepository(tenantId);
|
||||
if (repository != null) {
|
||||
log.debug("[{}] Fetching tenant repository.", tenantId);
|
||||
repository.fetch();
|
||||
@ -195,8 +195,17 @@ public class DefaultGitRepositoryService implements GitRepositoryService {
|
||||
}
|
||||
|
||||
private GitRepository checkRepository(TenantId tenantId) {
|
||||
return Optional.ofNullable(repositories.get(tenantId))
|
||||
GitRepository gitRepository = Optional.ofNullable(repositories.get(tenantId))
|
||||
.orElseThrow(() -> new IllegalStateException("Repository is not initialized"));
|
||||
|
||||
if (!Files.exists(Path.of(gitRepository.getDirectory()))) {
|
||||
try {
|
||||
return cloneRepository(tenantId, gitRepository.getSettings());
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("Repository is not initialized");
|
||||
}
|
||||
}
|
||||
return gitRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -229,17 +238,7 @@ public class DefaultGitRepositoryService implements GitRepositoryService {
|
||||
testRepository(tenantId, settings);
|
||||
|
||||
clearRepository(tenantId);
|
||||
log.debug("[{}] Init tenant repository started.", tenantId);
|
||||
Path repositoryDirectory = Path.of(repositoriesFolder, tenantId.getId().toString());
|
||||
GitRepository repository;
|
||||
if (Files.exists(repositoryDirectory)) {
|
||||
FileUtils.forceDelete(repositoryDirectory.toFile());
|
||||
}
|
||||
|
||||
Files.createDirectories(repositoryDirectory);
|
||||
repository = GitRepository.clone(settings, repositoryDirectory.toFile());
|
||||
repositories.put(tenantId, repository);
|
||||
log.debug("[{}] Init tenant repository completed.", tenantId);
|
||||
cloneRepository(tenantId, settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -276,4 +275,18 @@ public class DefaultGitRepositoryService implements GitRepositoryService {
|
||||
String entityId = StringUtils.substringBetween(path, "/", ".json");
|
||||
return EntityIdFactory.getByTypeAndUuid(entityType, entityId);
|
||||
}
|
||||
|
||||
private GitRepository cloneRepository(TenantId tenantId, RepositorySettings settings) throws Exception {
|
||||
log.debug("[{}] Init tenant repository started.", tenantId);
|
||||
Path repositoryDirectory = Path.of(repositoriesFolder, tenantId.getId().toString());
|
||||
|
||||
if (Files.exists(repositoryDirectory)) {
|
||||
FileUtils.forceDelete(repositoryDirectory.toFile());
|
||||
}
|
||||
Files.createDirectories(repositoryDirectory);
|
||||
GitRepository repository = GitRepository.clone(settings, repositoryDirectory.toFile());
|
||||
repositories.put(tenantId, repository);
|
||||
log.debug("[{}] Init tenant repository completed.", tenantId);
|
||||
return repository;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user