我试图克隆一个包含一个大文件(2GB以上)的存储库,因为本文提到Jgit可以处理的文件的最大大小是2GB。我看到通过pure git命令,我可以使用git克隆--filter=blob:limit=100m
过滤大文件,现在我希望在使用Jgit的java代码中实现这个过滤器,这样我就可以避免异常对象太大(2,424,185,920字节),拒绝这个包。最大对象大小限制为2,147,483,639
目前我使用Jgit进行克隆,如下所示:
Git git = Git.cloneRepository()
.setURI(gitUrl)
.setBranch(branch)
.setCloneAllBranches(false)
.setCredentialsProvider(credentialsProvider)
.setDirectory(directory)
.call();
我想知道是否有选项添加过滤器到克隆,这样它就可以避免使用JGIT克隆大文件?
也许您可以使用InMemoryRepository,然后使用RevWalk/Treewalk根据大小进行筛选。
https://github.com/centic9/jgit-cookbook/blob/master/src/main/java/org/dstadler/jgit/chocial/cloneremoterepositoryintomemoryandreadfile.java
下面的示例是jgit-cookbook的副本:
public static void main(String[] args) throws IOException, GitAPIException {
DfsRepositoryDescription repoDesc = new DfsRepositoryDescription();
InMemoryRepository repo = new InMemoryRepository(repoDesc);
Git git = new Git(repo);
git.fetch()
.setRemote(REMOTE_URL)
.setRefSpecs(new RefSpec("+refs/heads/*:refs/heads/*"))
.call();
repo.getObjectDatabase();
ObjectId lastCommitId = repo.resolve("refs/heads/" + BRANCH);
RevWalk revWalk = new RevWalk(repo);
RevCommit commit = revWalk.parseCommit(lastCommitId);
RevTree tree = commit.getTree();
TreeWalk treeWalk = new TreeWalk(repo);
treeWalk.addTree(tree);
treeWalk.setRecursive(true);
treeWalk.setFilter(PathFilter.create(FILE_TO_READ));
if (!treeWalk.next()) {
return;
}
ObjectId objectId = treeWalk.getObjectId(0);
ObjectLoader loader = repo.open(objectId);
loader.copyTo(System.out);
}
问题内容: 我正在按照以下指南使用jGit克隆远程现有存储库: https://github.com/centic9/jgit- cookbook/blob/master/src/main/java/org/dstadler/jgit/porcelain/CloneRemoteRepository.java 我在示例中使用CFML: 克隆的效果很好,但是在我停止Java进程之前,文件锁不会释放在其
问题内容: 我知道我可以按文件类型进行过滤,但是可以按文件大小进行过滤吗? 例如,一个JFileChooser仅显示3 MB内的图片。 问题答案: 简短的答案应该是,您尝试了什么?长答案是肯定的… 从技术上讲,您可以过滤以下任何属性或属性组合
问题内容: 不久前,我正在寻找Java中的可嵌入的分布式版本控制系统,我想我已经在JGit中找到了它,它是git的纯Java实现。但是,示例代码或教程的方式并不多。 如何使用JGit检索某个文件的HEAD版本(就像或应该做)? 我想这涉及一些rev-tree-walking,并且正在寻找代码示例。 问题答案: 不幸的是,Thilo的答案不适用于最新的JGit API。这是我找到的解决方案: 我希望
问题内容: 我该怎么办 与JGIT库? 问题答案: 您不能,JGit尚不支持客户端上的浅表克隆(不过,它在服务器端上)。
问题内容: 我有一个像这样的数组: 现在,我想按某种条件过滤该数组,只保留值等于2的元素,并删除值不等于2的所有元素。 所以我的预期结果数组将是: 注意:我想保留原始数组中的键。 如何使用PHP做到这一点?有内置功能吗? 问题答案:
当我尝试使用JGit api克隆现有的远程git存储库时,出现以下错误。 例外:org。日食jgit。应用程序编程接口。错误。运输例外:http://admin@本地主机:7990/scm/cp/myrepo。git安全连接到https://admin@本地主机:7990/scm/cp/myrepo。由于SSL问题,无法建立git 在我的课堂上,我使用下面的方法来克隆存储库。 我知道我可以通过使用