From 73e88e52da66b71dd37e1f5a1df91aa7410ddded Mon Sep 17 00:00:00 2001 From: Laisky Date: Sun, 29 Sep 2019 15:37:48 +0800 Subject: [PATCH] Adds option to clone git submodules. Fixes gh-717 Fixes gh-1484 --- .../environment/JGitEnvironmentProperties.java | 13 +++++++++++++ .../environment/JGitEnvironmentRepository.java | 16 ++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/JGitEnvironmentProperties.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/JGitEnvironmentProperties.java index a1502d61..6b087fd8 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/JGitEnvironmentProperties.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/JGitEnvironmentProperties.java @@ -40,6 +40,11 @@ public class JGitEnvironmentProperties extends AbstractScmAccessorProperties */ private boolean cloneOnStart = false; + /** + * Flag to indicate that the submodules in the repository should be cloned. + */ + private boolean cloneSubmodules = false; + /** * Flag to indicate that the repository should force pull. If true discard any local * changes and take from remote repository. @@ -127,6 +132,14 @@ public class JGitEnvironmentProperties extends AbstractScmAccessorProperties this.cloneOnStart = cloneOnStart; } + public boolean isCloneSubmodules() { + return this.cloneSubmodules; + } + + public void setCloneSubmodules(boolean cloneSubmodules) { + this.cloneSubmodules = cloneSubmodules; + } + public boolean isForcePull() { return this.forcePull; } diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/JGitEnvironmentRepository.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/JGitEnvironmentRepository.java index 02d117e3..8b958d16 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/JGitEnvironmentRepository.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/JGitEnvironmentRepository.java @@ -112,7 +112,7 @@ public class JGitEnvironmentRepository extends AbstractScmEnvironmentRepository */ private boolean cloneOnStart; - private JGitEnvironmentRepository.JGitFactory gitFactory = new JGitEnvironmentRepository.JGitFactory(); + private JGitEnvironmentRepository.JGitFactory gitFactory; private String defaultLabel; @@ -157,6 +157,7 @@ public class JGitEnvironmentRepository extends AbstractScmEnvironmentRepository this.deleteUntrackedBranches = properties.isDeleteUntrackedBranches(); this.refreshRate = properties.getRefreshRate(); this.skipSslValidation = properties.isSkipSslValidation(); + this.gitFactory = new JGitFactory(properties.isCloneSubmodules()); } public boolean isCloneOnStart() { @@ -705,13 +706,24 @@ public class JGitEnvironmentRepository extends AbstractScmEnvironmentRepository */ public static class JGitFactory { + private final boolean cloneSubmodules; + + public JGitFactory() { + this(false); + } + + public JGitFactory(boolean cloneSubmodules) { + this.cloneSubmodules = cloneSubmodules; + } + public Git getGitByOpen(File file) throws IOException { Git git = Git.open(file); return git; } public CloneCommand getCloneCommandByCloneRepository() { - CloneCommand command = Git.cloneRepository(); + CloneCommand command = Git.cloneRepository() + .setCloneSubmodules(cloneSubmodules); return command; }