diff --git a/core/src/main/java/com/gitee/kooder/code/GitRepositoryProvider.java b/core/src/main/java/com/gitee/kooder/code/GitRepositoryProvider.java index ad6f2785975aa7c2a5929f035ef88ef53969262a..45b491d6cbb1ec2ee56fa0f645d7fea1eda2c7dd 100644 --- a/core/src/main/java/com/gitee/kooder/code/GitRepositoryProvider.java +++ b/core/src/main/java/com/gitee/kooder/code/GitRepositoryProvider.java @@ -67,8 +67,18 @@ public class GitRepositoryProvider implements RepositoryProvider { private final static SlocCounter slocCounter = new SlocCounter(); private CredentialsProvider credentialsProvider; private TransportConfigCallback transportConfigCallback; + private String protocol = "http"; + + private static final String HTTPS = "https"; + + private static final String REPO_SUFFIX = ".git"; public GitRepositoryProvider() { + String gitUrl = KooderConfig.getProperty("gitlab.url"); + if(gitUrl.startsWith(HTTPS)){ + this.protocol = HTTPS; + } + //http authenticator String username = KooderConfig.getProperty("git.username"); String password = KooderConfig.getProperty("git.password"); @@ -77,6 +87,7 @@ public class GitRepositoryProvider implements RepositoryProvider { if(StringUtils.isBlank(password)) password = KooderConfig.getProperty("gitee.personal_access_token"); } + if(StringUtils.isNotBlank(username) && StringUtils.isNotBlank(password)) this.credentialsProvider = new UsernamePasswordCredentialsProvider(username, password); @@ -122,6 +133,14 @@ public class GitRepositoryProvider implements RepositoryProvider { Git git = null; try { long ct = System.currentTimeMillis(); + // 修复部分gitlab域名与项目仓库地址协议不一致的问题 + if(protocol.equals(HTTPS) && !repo.getUrl().startsWith(HTTPS)) { + repo.setUrl(repo.getUrl().replace("http", HTTPS)); + } + // 修复部分仓库地址不以.git结尾导致301重定向的问题 + if(!repo.getUrl().endsWith(REPO_SUFFIX)){ + repo.setUrl(repo.getUrl() + REPO_SUFFIX); + } File repoFile = StorageFactory.getRepositoryPath(repo.getRelativePath()).toFile(); log.info("Pulling code from {} to {}.", repo.getUrl(), repoFile.getPath()); if (!repoFile.exists()) {//检查目录不存在就 clone diff --git a/core/src/main/java/com/gitee/kooder/models/Repository.java b/core/src/main/java/com/gitee/kooder/models/Repository.java index df3f0ee087baec1906593bcd23edb223259a030f..0b38ea44161beebfd6a545ce5edc6ca52c432ff1 100644 --- a/core/src/main/java/com/gitee/kooder/models/Repository.java +++ b/core/src/main/java/com/gitee/kooder/models/Repository.java @@ -69,7 +69,12 @@ public final class Repository extends Searchable { //this.project = Relation.EMPTY(); if(p.getOwner() != null) this.owner = new Relation(p.getOwner().getId(), p.getOwner().getName(), p.getOwner().getWebUrl()); - this.setVisibility(p.getVisibility()); + // 修复部分版本接口不返回visibility但返回level的问题 + if(p.getVisibility() == null && p.getVisibilityLevel() != null){ + this.setVisibility(p.getVisibilityLevel()); + }else{ + this.setVisibility(p.getVisibility()); + } if(p.getLicense() != null) this.setLicense(p.getLicense().getName()); this.setLang(null);// 编程语言如何获取