From 312d613d7cae03fa985cc45924d69d91c73e6375 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Tue, 21 Jun 2022 11:14:13 +0400 Subject: [PATCH] #58 -- validate git project directory --- .../gitrepository/GitRepositoryService.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main/java/ru/ulstu/extractor/gitrepository/GitRepositoryService.java b/src/main/java/ru/ulstu/extractor/gitrepository/GitRepositoryService.java index f05a91a..311ddff 100644 --- a/src/main/java/ru/ulstu/extractor/gitrepository/GitRepositoryService.java +++ b/src/main/java/ru/ulstu/extractor/gitrepository/GitRepositoryService.java @@ -192,6 +192,7 @@ public class GitRepositoryService { private void cloneOrUpdateRepo(String repositoryUrl, String branchName) throws GitAPIException, IOException { Git git; org.eclipse.jgit.lib.Repository localRepo; + validateOrClearRepositoryDirectory(getProjectDirectoryFile(repositoryUrl)); if (projectDirExists(getProjectDirectoryFile(repositoryUrl))) { localRepo = new FileRepository(getProjectGitDirectory(repositoryUrl)); git = new Git(localRepo); @@ -210,6 +211,26 @@ public class GitRepositoryService { git.close(); } + private void validateOrClearRepositoryDirectory(File projectDirectory) { + if (projectDirectory.exists()) { + try { + Git.open(projectDirectory).status().call(); + } catch (Exception e) { + deleteDirectory(projectDirectory); + } + } + } + + private boolean deleteDirectory(File directoryToBeDeleted) { + File[] allContents = directoryToBeDeleted.listFiles(); + if (allContents != null) { + for (File file : allContents) { + deleteDirectory(file); + } + } + return directoryToBeDeleted.delete(); + } + private void cloneOrUpdateRepo(String url) throws GitAPIException, IOException { cloneOrUpdateRepo(url, null); }