From 9bd6f11df340680cb3f9024ec9e4b412c93b192a Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Mon, 6 Oct 2014 11:39:40 +0100 Subject: [PATCH] Special treatment for local repository --- .../server/JGitEnvironmentRepository.java | 21 +++++++++++++++---- .../JGitEnvironmentRepositoryTests.java | 2 +- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/JGitEnvironmentRepository.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/JGitEnvironmentRepository.java index 1f7ffe2f..734c9267 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/JGitEnvironmentRepository.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/JGitEnvironmentRepository.java @@ -24,6 +24,7 @@ import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.jgit.api.CheckoutCommand; +import org.eclipse.jgit.api.CloneCommand; import org.eclipse.jgit.api.CreateBranchCommand.SetupUpstreamMode; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.ListBranchCommand; @@ -31,10 +32,12 @@ import org.eclipse.jgit.api.ListBranchCommand.ListMode; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.util.FileUtils; -import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.cloud.config.Environment; import org.springframework.cloud.config.PropertySource; +import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.io.UrlResource; import org.springframework.util.Assert; +import org.springframework.util.FileSystemUtils; /** * @author Dave Syer @@ -117,7 +120,15 @@ public class JGitEnvironmentRepository implements EnvironmentRepository { } } Assert.state(basedir.mkdirs(), "Could not create basedir: " + basedir); - git = Git.cloneRepository().setURI(uri).setDirectory(basedir).call(); + if (uri.startsWith("file:")) { + FileSystemUtils.copyRecursively(new UrlResource(uri).getFile(), basedir); + git = Git.open(basedir); + } + else { + CloneCommand clone = Git.cloneRepository().setURI(uri) + .setDirectory(basedir); + git = clone.call(); + } } Environment result; synchronized (this) { @@ -137,8 +148,10 @@ public class JGitEnvironmentRepository implements EnvironmentRepository { // Assumes we are on a tracking branch (should be safe) try { git.pull().call(); - } catch (Exception e) { - logger.warn("Could not pull remote for " + label + " (current ref=" + ref + ")"); + } + catch (Exception e) { + logger.warn("Could not pull remote for " + label + + " (current ref=" + ref + ")"); } } String search = basedir.toURI().toString(); diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/JGitEnvironmentRepositoryTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/JGitEnvironmentRepositoryTests.java index 72a22485..58e3098d 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/JGitEnvironmentRepositoryTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/JGitEnvironmentRepositoryTests.java @@ -62,7 +62,7 @@ public class JGitEnvironmentRepositoryTests { git.renameTo(dotGit); repository .setUri(environment - .resolvePlaceholders("${user.name}@localhost:${user.dir}/target/test-classes/config-repo")); + .resolvePlaceholders("file:./target/test-classes/config-repo")); if (basedir.exists()) { FileUtils.delete(basedir, FileUtils.RECURSIVE); }