将JGit用于http url克隆远程存储库失败 [英] Cloning remote repository fails using JGit for http url
问题描述
这里的问题是,URL被重定向,这在JGit中未处理.没有报告过相同的错误,并且还提到它们已解决,但我仍然面临这个问题.如果我做错了任何事情,请告诉我.
The problem here is, URL is redirected which is not handled in JGit. There are no of bugs reported for same and it is also mentioned that they are resolved but I am still facing this issue. Please let me know if I am doing anything wrong.
代码段
private static Git cloneRepository(String url, String branch, String targetPath) throws IOException {
Git result = null;
try {
CloneCommand cloneCommand = Git.cloneRepository().setCloneSubmodules(true)
.setURI(url).setBranch(branch)
.setCloneSubmodules(true)
.setDirectory(new File(targetPath));
result = cloneCommand.call();
} catch (GitAPIException e) {
e.printStackTrace();
}
return result;
}
public static void main(String[] args) throws IOException {
cloneRepository("http://github.com/google/mathfu", "master", "D:/codebase");
//cloneRepository("https://github.com/google/mathfu", "master", "D:/codebase");
}
运行代码后出现异常
org.eclipse.jgit.api.errors.TransportException: 'http://github.com/google/mathfu': 301 Moved Permanently
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:245)
at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:293)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:190)
at com.acellere.demo.GitDemo.App.cloneRepository(App.java:21)
at com.acellere.demo.GitDemo.App.main(App.java:31)
Caused by: org.eclipse.jgit.errors.TransportException: 'http://github.com/google/mathfu': 301 Moved Permanently
at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:545)
at org.eclipse.jgit.transport.TransportHttp.openFetch(TransportHttp.java:326)
at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:136)
at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:122)
at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1236)
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:234)
... 4 more
更改以下代码后
//cloneRepository("http://github.com/google/mathfu", "master", "D:/codebase");
cloneRepository("https://github.com/google/mathfu", "master", "D:/codebase");
例外
org.eclipse.jgit.api.errors.TransportException: 'http://github.com/google/fplutil.git': 301 Moved Permanently
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:245)
at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:293)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:190)
at org.eclipse.jgit.api.SubmoduleUpdateCommand.call(SubmoduleUpdateCommand.java:177)
at org.eclipse.jgit.api.CloneCommand.cloneSubmodules(CloneCommand.java:372)
at org.eclipse.jgit.api.CloneCommand.checkout(CloneCommand.java:353)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:215)
at com.acellere.demo.GitDemo.App.cloneRepository(App.java:16)
at com.acellere.demo.GitDemo.App.main(App.java:25)
Caused by: org.eclipse.jgit.errors.TransportException: 'http://github.com/google/fplutil.git': 301 Moved Permanently
at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:545)
at org.eclipse.jgit.transport.TransportHttp.openFetch(TransportHttp.java:326)
at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:136)
at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:122)
at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1236)
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:234)
... 8 more
详细信息:
使用以下JGit版本 4.8.0.201706111038-r
using following JGit version 4.8.0.201706111038-r
也尝试过4.4.x.xxxxx版本
Also tried with version 4.4.x.xxxxx too
推荐答案
With this change: https://git.eclipse.org/r/#/c/46261/, that was merged in February 2017, JGit should be able to follow HTTP 301 status codes (moved permanently).
但是,CloneCommand
似乎还没有起作用.我可以验证您的代码段是否抛出TransportException
.
However, the CloneCommand
does not seem to work yet. I can verify that your code snippet throws a TransportException
.
可以在此处找到相应的错误报告:
The corresponding bug reports can be found here:
https://bugs.eclipse.org/bugs/show_bug.cgi ?id = 465167 https://bugs.eclipse.org/bugs/show_bug.cgi?id= 474094
我已在错误报告中添加了指向此帖子的评论.
I have added a comment to the bug report that points to this post.
更新2017-08-18:该错误已修复,将在JGit 4.9中发布
Update 2017-08-18: the bug is fixed and will be released in JGit 4.9
这篇关于将JGit用于http url克隆远程存储库失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!