diff --git a/server/src/main/java/org/jboss/as/server/controller/git/GitRepository.java b/server/src/main/java/org/jboss/as/server/controller/git/GitRepository.java index 27c048b039d..50417904a00 100644 --- a/server/src/main/java/org/jboss/as/server/controller/git/GitRepository.java +++ b/server/src/main/java/org/jboss/as/server/controller/git/GitRepository.java @@ -19,7 +19,6 @@ import java.nio.file.FileVisitor; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.StandardCopyOption; import java.nio.file.attribute.BasicFileAttributes; import java.security.GeneralSecurityException; import java.util.Collections; @@ -120,7 +119,7 @@ public GitRepository(GitRepositoryConfiguration gitConfig) } } else { Path atticPath = basePath.getParent().resolve("attic"); - Files.copy(basePath, atticPath, StandardCopyOption.REPLACE_EXISTING); + PathUtil.copyRecursively(basePath, atticPath, true); clearExistingFiles(basePath, gitConfig.getRepository()); try (Git git = Git.init().setDirectory(baseDir).setInitialBranch(branch).call()) { String remoteName = DEFAULT_REMOTE_NAME; diff --git a/server/src/test/java/org/jboss/as/controller/persistence/RemoteGitPersistenceResourceTestCase.java b/server/src/test/java/org/jboss/as/controller/persistence/RemoteGitPersistenceResourceTestCase.java index 347038deac7..4e6d765ef11 100644 --- a/server/src/test/java/org/jboss/as/controller/persistence/RemoteGitPersistenceResourceTestCase.java +++ b/server/src/test/java/org/jboss/as/controller/persistence/RemoteGitPersistenceResourceTestCase.java @@ -147,5 +147,25 @@ public void testDefaultPersistentConfigurationFile() throws Exception { } } + @Test + public void testNonExistingRemoteRepository() throws Exception { + createFile(root, "standard.xml", "std"); + checkFiles("standard", "std"); + String[] rootFiles = root.toFile().list(); + Assert.assertNotNull(rootFiles); + Assert.assertEquals(1, rootFiles.length); + try (GitRepository gitRepository = new GitRepository(GitRepositoryConfiguration.Builder.getInstance() + .setBasePath(root) + .setRepository("non_existing") + .build())) { + Assert.assertEquals(root.toFile(), gitRepository.getDirectory()); + } catch (RuntimeException e) { + Assert.assertTrue(e.getMessage().contains("WFLYSRV0269: Failed to initialize the repository non_existing")); + rootFiles = root.toFile().list(); + Assert.assertNotNull(rootFiles); + Assert.assertEquals(1, rootFiles.length); + checkFiles("standard", "std"); + } + } }