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 3c11fee4..57eea416 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 @@ -24,10 +24,20 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import org.eclipse.jgit.api.*; +import org.eclipse.jgit.api.CheckoutCommand; +import org.eclipse.jgit.api.CloneCommand; import org.eclipse.jgit.api.CreateBranchCommand.SetupUpstreamMode; +import org.eclipse.jgit.api.FetchCommand; +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.ListBranchCommand; import org.eclipse.jgit.api.ListBranchCommand.ListMode; +import org.eclipse.jgit.api.MergeCommand; +import org.eclipse.jgit.api.MergeResult; +import org.eclipse.jgit.api.ResetCommand; import org.eclipse.jgit.api.ResetCommand.ResetType; +import org.eclipse.jgit.api.Status; +import org.eclipse.jgit.api.StatusCommand; +import org.eclipse.jgit.api.TransportCommand; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.RefNotFoundException; import org.eclipse.jgit.lib.Ref; @@ -157,10 +167,12 @@ public class JGitEnvironmentRepository extends AbstractScmEnvironmentRepository try { git = createGitClient(); if (shouldPull(git)) { - fetch(git, label); + FetchResult fetchResult = fetch(git, label); + //checkout after fetch so we can get any new branches, tags, ect. checkout(git, label); if(isBranch(git, label)) { - merge(git, label); + //merge results from fetch + MergeResult mergeResult = merge(git, label); if (!isClean(git)) { logger.warn("The local repository is dirty. Resetting it to origin/" + label + "."); @@ -170,6 +182,7 @@ public class JGitEnvironmentRepository extends AbstractScmEnvironmentRepository } else{ + //nothing to update so just checkout checkout(git, label); } //always return what is currently HEAD as the version @@ -328,29 +341,6 @@ public class JGitEnvironmentRepository extends AbstractScmEnvironmentRepository } } - /** - * Assumes we are on a tracking branch (should be safe) - */ - private void pull(Git git, String label, Ref ref) { - PullCommand pull = git.pull(); - setTimeout(pull); - try { - if (hasText(getUsername())) { - setCredentialsProvider(pull); - } - pull.call(); - } - catch (Exception e) { - this.logger - .warn("Could not pull remote for " + label + " (current ref=" + ref - + "), remote: " - + git.getRepository().getConfig().getString("remote", - "origin", "url") - + ", cause: (" + e.getClass().getSimpleName() + ") " - + e.getMessage()); - } - } - private Git createGitClient() throws IOException, GitAPIException { if (new File(getBasedir(), ".git").exists()) { return openGitRepository(); diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/JGitConfigServerTestData.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/JGitConfigServerTestData.java index 25b36130..959e1247 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/JGitConfigServerTestData.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/JGitConfigServerTestData.java @@ -27,6 +27,7 @@ import java.io.File; /** * Class that holds objects that can be used for testing + * @author Ryan Lynch */ public class JGitConfigServerTestData { diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/JGitEnvironmentRepositoryIntegrationTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/JGitEnvironmentRepositoryIntegrationTests.java index 6430b67d..eb2047b6 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/JGitEnvironmentRepositoryIntegrationTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/JGitEnvironmentRepositoryIntegrationTests.java @@ -63,6 +63,7 @@ import org.springframework.util.StreamUtils; * @author Dave Syer * @author Roy Clarkson * @author Daniel Lavoie + * @author Ryan Lynch */ public class JGitEnvironmentRepositoryIntegrationTests { diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/JGitEnvironmentRepositoryTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/JGitEnvironmentRepositoryTests.java index de18087b..fb444f44 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/JGitEnvironmentRepositoryTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/JGitEnvironmentRepositoryTests.java @@ -23,7 +23,6 @@ import org.eclipse.jgit.api.CloneCommand; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.Status; import org.eclipse.jgit.api.StatusCommand; -import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.StoredConfig; import org.eclipse.jgit.util.FileUtils; @@ -36,7 +35,6 @@ import org.springframework.core.env.StandardEnvironment; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any;