From e88f12b57451bc5959c24b3c65ba05d00e8df2d8 Mon Sep 17 00:00:00 2001 From: rlynch2 Date: Thu, 3 Nov 2016 22:26:29 -0700 Subject: [PATCH] =?UTF-8?q?version=20not=20being=20updated=20on=20first=20?= =?UTF-8?q?request=20after=20update=20(including=20due=20to=20hard=20reset?= =?UTF-8?q?s)=20New=20remote=20branches=20New=20remote=20tags=20=E2=80=94?= =?UTF-8?q?=20handling=20a=20null=20ref=20in=20should=20pull=20no=20longer?= =?UTF-8?q?=20needed.=20=E2=80=94=20has=20added=20benefit=20of=20ensuring?= =?UTF-8?q?=20the=20local=20repo=20is=20current=20in=20case=20of=20git=20f?= =?UTF-8?q?ailure.=20Returns=20version=20for=20tags=20(version=20was=20nul?= =?UTF-8?q?l=20before=20this=20change)=20New=20starter=20code=20for=20remo?= =?UTF-8?q?te=20repo=20testing=20(where=20a=20lot=20of=20the=20complexity?= =?UTF-8?q?=20lies)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JGitEnvironmentRepository.java | 42 +++++++------------ .../environment/JGitConfigServerTestData.java | 1 + ...EnvironmentRepositoryIntegrationTests.java | 1 + .../JGitEnvironmentRepositoryTests.java | 2 - 4 files changed, 18 insertions(+), 28 deletions(-) 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;