Don't delete the remote repo if it is also local

This commit is contained in:
Dave Syer
2015-01-19 16:11:45 +00:00
parent fecc7c8539
commit 3d1bc33f8e
2 changed files with 20 additions and 9 deletions

View File

@@ -180,15 +180,27 @@ public class JGitEnvironmentRepository implements EnvironmentRepository, Initial
if (shouldPull(git, ref)) {
pull(git, label, ref);
}
environment.setSearchLocations(getSearchLocations(basedir));
environment.setSearchLocations(getSearchLocations(getWorkingDirectory()));
return clean(environment.findOne(application, profile, ""));
}
private File getWorkingDirectory() {
if (uri.startsWith("file:")) {
try {
return new UrlResource(StringUtils.cleanPath(uri)).getFile();
}
catch (Exception e) {
throw new IllegalStateException("Cannot convert uri to file: " + uri);
}
}
return basedir;
}
private String[] getSearchLocations(File dir) {
List<String> locations = new ArrayList<String>();
locations.add(dir.toURI().toString());
for (String path : searchPaths) {
File file = new File(basedir, path);
File file = new File(getWorkingDirectory(), path);
if (file.isDirectory()) {
locations.add(file.toURI().toString());
}
@@ -209,7 +221,9 @@ public class JGitEnvironmentRepository implements EnvironmentRepository, Initial
}
private boolean shouldPull(Git git, Ref ref) throws GitAPIException {
return git.status().call().isClean() && ref != null;
return git.status().call().isClean()
&& ref != null
&& git.getRepository().getConfig().getString("remote", "origin", "url")!=null;
}
private boolean shouldTrack(Git git, String label) throws GitAPIException {
@@ -254,7 +268,7 @@ public class JGitEnvironmentRepository implements EnvironmentRepository, Initial
}
private Git openGitRepository() throws IOException {
Git git = Git.open(basedir);
Git git = Git.open(getWorkingDirectory());
tryFetch(git);
return git;
}
@@ -266,8 +280,7 @@ public class JGitEnvironmentRepository implements EnvironmentRepository, Initial
File gitDir = new File(remote, ".git");
Assert.state(gitDir.exists(), "No .git at " + uri);
Assert.state(gitDir.isDirectory(), "No .git directory at " + uri);
basedir = remote;
git = Git.open(basedir);
git = Git.open(remote);
return git;
}
@@ -352,7 +365,7 @@ public class JGitEnvironmentRepository implements EnvironmentRepository, Initial
private Environment clean(Environment value) {
Environment result = new Environment(value.getName(), value.getLabel());
for (PropertySource source : value.getPropertySources()) {
String name = source.getName().replace(basedir.toURI().toString(), "");
String name = source.getName().replace(getWorkingDirectory().toURI().toString(), "");
if (name.contains(("classpath:/"))) {
continue;
}

View File

@@ -67,8 +67,6 @@ public class JGitEnvironmentRepositoryIntegrationTests {
String uri = ConfigServerTestUtils.prepareLocalRepo();
context = new SpringApplicationBuilder(TestConfiguration.class).web(false)
.properties("spring.cloud.config.server.git.uri:" + uri).run();
// TODO: why didn't .properties() work for me?
// .run("--spring.cloud.config.server.git.uri=" + uri);
EnvironmentRepository repository = context.getBean(EnvironmentRepository.class);
repository.findOne("bar", "staging", "master");
Environment environment = repository.findOne("bar", "staging", "master");