diff --git a/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/DefaultClusterVersionControlService.java b/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/DefaultClusterVersionControlService.java index 138505bd8d..ca0636761d 100644 --- a/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/DefaultClusterVersionControlService.java +++ b/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/DefaultClusterVersionControlService.java @@ -223,7 +223,7 @@ public class DefaultClusterVersionControlService extends TbApplicationEventListe var currentSettings = vcService.getRepositorySettings(ctx.getTenantId()); var newSettings = ctx.getSettings(); if (!newSettings.equals(currentSettings)) { - vcService.initRepository(ctx.getTenantId(), ctx.getSettings()); + vcService.initRepository(ctx.getTenantId(), ctx.getSettings(), false); } if (msg.hasCommitRequest()) { handleCommitRequest(ctx, msg.getCommitRequest()); @@ -464,7 +464,7 @@ public class DefaultClusterVersionControlService extends TbApplicationEventListe private void handleInitRepositoryCommand(VersionControlRequestCtx ctx) { try { - vcService.initRepository(ctx.getTenantId(), ctx.getSettings()); + vcService.initRepository(ctx.getTenantId(), ctx.getSettings(), false); reply(ctx, Optional.empty()); } catch (Exception e) { log.debug("[{}] Failed to connect to the repository: ", ctx, e); @@ -564,4 +564,5 @@ public class DefaultClusterVersionControlService extends TbApplicationEventListe }, MoreExecutors.directExecutor()); } } + } diff --git a/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/DefaultGitRepositoryService.java b/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/DefaultGitRepositoryService.java index bf3e202c2d..0788143030 100644 --- a/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/DefaultGitRepositoryService.java +++ b/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/DefaultGitRepositoryService.java @@ -205,7 +205,7 @@ public class DefaultGitRepositoryService implements GitRepositoryService { if (!Files.exists(Path.of(gitRepository.getDirectory()))) { try { - return cloneRepository(tenantId, gitRepository.getSettings()); + return openOrCloneRepository(tenantId, gitRepository.getSettings(), false); } catch (Exception e) { throw new IllegalStateException("Could not initialize the repository: " + e.getMessage(), e); } @@ -239,11 +239,11 @@ public class DefaultGitRepositoryService implements GitRepositoryService { } @Override - public void initRepository(TenantId tenantId, RepositorySettings settings) throws Exception { + public void initRepository(TenantId tenantId, RepositorySettings settings, boolean fetch) throws Exception { if (!settings.isLocalOnly()) { clearRepository(tenantId); } - cloneRepository(tenantId, settings); + openOrCloneRepository(tenantId, settings, fetch); } @Override @@ -280,13 +280,16 @@ public class DefaultGitRepositoryService implements GitRepositoryService { return EntityIdFactory.getByTypeAndUuid(entityType, entityId); } - private GitRepository cloneRepository(TenantId tenantId, RepositorySettings settings) throws Exception { + private GitRepository openOrCloneRepository(TenantId tenantId, RepositorySettings settings, boolean fetch) throws Exception { log.debug("[{}] Init tenant repository started.", tenantId); Path repositoryDirectory = Path.of(repositoriesFolder, settings.isLocalOnly() ? "local_" + settings.getRepositoryUri() : tenantId.getId().toString()); GitRepository repository; if (Files.exists(repositoryDirectory)) { repository = GitRepository.open(repositoryDirectory.toFile(), settings); + if (fetch) { + repository.fetch(); + } } else { Files.createDirectories(repositoryDirectory); if (settings.isLocalOnly()) { diff --git a/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepositoryService.java b/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepositoryService.java index 1382a69599..d5d51397f9 100644 --- a/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepositoryService.java +++ b/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepositoryService.java @@ -42,7 +42,7 @@ public interface GitRepositoryService { void testRepository(TenantId tenantId, RepositorySettings settings) throws Exception; - void initRepository(TenantId tenantId, RepositorySettings settings) throws Exception; + void initRepository(TenantId tenantId, RepositorySettings settings, boolean fetch) throws Exception; RepositorySettings getRepositorySettings(TenantId tenantId) throws Exception; @@ -67,4 +67,5 @@ public interface GitRepositoryService { String getContentsDiff(TenantId tenantId, String content1, String content2) throws IOException; void fetch(TenantId tenantId) throws GitAPIException; + }