Browse Source

Merge pull request #11761 from thingsboard/fix/repo-fetch

Add option to fetch repo if already cloned (for converters library)
pull/11768/head
Viacheslav Klimov 2 years ago
committed by GitHub
parent
commit
208aab2395
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 5
      common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/DefaultClusterVersionControlService.java
  2. 11
      common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/DefaultGitRepositoryService.java
  3. 3
      common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepositoryService.java

5
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 currentSettings = vcService.getRepositorySettings(ctx.getTenantId());
var newSettings = ctx.getSettings(); var newSettings = ctx.getSettings();
if (!newSettings.equals(currentSettings)) { if (!newSettings.equals(currentSettings)) {
vcService.initRepository(ctx.getTenantId(), ctx.getSettings()); vcService.initRepository(ctx.getTenantId(), ctx.getSettings(), false);
} }
if (msg.hasCommitRequest()) { if (msg.hasCommitRequest()) {
handleCommitRequest(ctx, msg.getCommitRequest()); handleCommitRequest(ctx, msg.getCommitRequest());
@ -464,7 +464,7 @@ public class DefaultClusterVersionControlService extends TbApplicationEventListe
private void handleInitRepositoryCommand(VersionControlRequestCtx ctx) { private void handleInitRepositoryCommand(VersionControlRequestCtx ctx) {
try { try {
vcService.initRepository(ctx.getTenantId(), ctx.getSettings()); vcService.initRepository(ctx.getTenantId(), ctx.getSettings(), false);
reply(ctx, Optional.empty()); reply(ctx, Optional.empty());
} catch (Exception e) { } catch (Exception e) {
log.debug("[{}] Failed to connect to the repository: ", ctx, e); log.debug("[{}] Failed to connect to the repository: ", ctx, e);
@ -564,4 +564,5 @@ public class DefaultClusterVersionControlService extends TbApplicationEventListe
}, MoreExecutors.directExecutor()); }, MoreExecutors.directExecutor());
} }
} }
} }

11
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()))) { if (!Files.exists(Path.of(gitRepository.getDirectory()))) {
try { try {
return cloneRepository(tenantId, gitRepository.getSettings()); return openOrCloneRepository(tenantId, gitRepository.getSettings(), false);
} catch (Exception e) { } catch (Exception e) {
throw new IllegalStateException("Could not initialize the repository: " + e.getMessage(), e); throw new IllegalStateException("Could not initialize the repository: " + e.getMessage(), e);
} }
@ -239,11 +239,11 @@ public class DefaultGitRepositoryService implements GitRepositoryService {
} }
@Override @Override
public void initRepository(TenantId tenantId, RepositorySettings settings) throws Exception { public void initRepository(TenantId tenantId, RepositorySettings settings, boolean fetch) throws Exception {
if (!settings.isLocalOnly()) { if (!settings.isLocalOnly()) {
clearRepository(tenantId); clearRepository(tenantId);
} }
cloneRepository(tenantId, settings); openOrCloneRepository(tenantId, settings, fetch);
} }
@Override @Override
@ -280,13 +280,16 @@ public class DefaultGitRepositoryService implements GitRepositoryService {
return EntityIdFactory.getByTypeAndUuid(entityType, entityId); 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); log.debug("[{}] Init tenant repository started.", tenantId);
Path repositoryDirectory = Path.of(repositoriesFolder, settings.isLocalOnly() ? "local_" + settings.getRepositoryUri() : tenantId.getId().toString()); Path repositoryDirectory = Path.of(repositoriesFolder, settings.isLocalOnly() ? "local_" + settings.getRepositoryUri() : tenantId.getId().toString());
GitRepository repository; GitRepository repository;
if (Files.exists(repositoryDirectory)) { if (Files.exists(repositoryDirectory)) {
repository = GitRepository.open(repositoryDirectory.toFile(), settings); repository = GitRepository.open(repositoryDirectory.toFile(), settings);
if (fetch) {
repository.fetch();
}
} else { } else {
Files.createDirectories(repositoryDirectory); Files.createDirectories(repositoryDirectory);
if (settings.isLocalOnly()) { if (settings.isLocalOnly()) {

3
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 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; RepositorySettings getRepositorySettings(TenantId tenantId) throws Exception;
@ -67,4 +67,5 @@ public interface GitRepositoryService {
String getContentsDiff(TenantId tenantId, String content1, String content2) throws IOException; String getContentsDiff(TenantId tenantId, String content1, String content2) throws IOException;
void fetch(TenantId tenantId) throws GitAPIException; void fetch(TenantId tenantId) throws GitAPIException;
} }

Loading…
Cancel
Save