Fix double /trunk folder bug

With this change, every repository initializer gets its own modification command and therefore its own commit. This allows each initializer to decide on its own, if he want to use the default path of the repository.
This commit is contained in:
Thomas Zerr
2024-04-30 15:28:08 +02:00
parent cdbf86b8c9
commit 6fbde760d4
6 changed files with 59 additions and 10 deletions

View File

@@ -60,18 +60,19 @@ public class RepositoryInitializer {
public void initialize(Repository repository, Map<String, JsonNode> contextEntries) {
try (RepositoryService service = serviceFactory.create(repository)) {
ModifyCommandBuilder modifyCommandBuilder = service.getModifyCommand();
InitializerContextImpl initializerContext = new InitializerContextImpl(repository, modifyCommandBuilder, contextEntries);
for (RepositoryContentInitializer initializer : contentInitializers) {
ModifyCommandBuilder modifyCommandBuilder = service.getModifyCommand();
InitializerContextImpl initializerContext = new InitializerContextImpl(repository, modifyCommandBuilder, contextEntries);
initializer.initialize(initializerContext);
if (!modifyCommandBuilder.isEmpty()) {
modifyCommandBuilder.setCommitMessage("initialize repository");
String revision = modifyCommandBuilder.execute();
LOG.info("initialized repository {} as revision {}", repository, revision);
}
}
modifyCommandBuilder.setCommitMessage("initialize repository");
String revision = modifyCommandBuilder.execute();
LOG.info("initialized repository {} as revision {}", repository, revision);
} catch (IOException e) {
throw new InternalRepositoryException(repository, "failed to initialize repository", e);
}
@@ -109,6 +110,11 @@ public class RepositoryInitializer {
public RepositoryContentInitializer.CreateFile create(String path) {
return new CreateFileImpl(this, builder.useDefaultPath(true).createFile(path).setOverwrite(true));
}
@Override
public RepositoryContentInitializer.CreateFile createWithDefaultPath(String path, boolean useDefaultPath) {
return new CreateFileImpl(this, builder.useDefaultPath(useDefaultPath).createFile(path).setOverwrite(true));
}
}
private static class CreateFileImpl implements RepositoryContentInitializer.CreateFile {