java Jgit如何过滤大文件克隆
我试图克隆一个包含一个大文件(2GB以上)的存储库,
正如article所提到的,Jgit可以处理的文件的最大大小是2GB。
我看到,通过纯git命令,我可以使用git clone --filter=blob:limit=100m
过滤大文件
现在我想在使用Jgit的java代码中实现这个过滤器,这样就可以避免异常
Object too large (2,424,185,920 bytes), rejecting the pack. Max object size limit is 2,147,483,639
目前我使用Jgit进行克隆,如下所示:
Git git = Git.cloneRepository()
.setURI(gitUrl)
.setBranch(branch)
.setCloneAllBranches(false)
.setCredentialsProvider(credentialsProvider)
.setDirectory(directory)
.call();
我想知道是否有向克隆添加过滤器的选项,以避免使用Jgit克隆大文件
# 1 楼答案
也许您可以使用InMemoryRepository,然后使用RevWalk/TreeWalk根据大小进行过滤
https://github.com/centic9/jgit-cookbook/blob/master/src/main/java/org/dstadler/jgit/porcelain/CloneRemoteRepositoryIntoMemoryAndReadFile.java
下面的例子是一本jgit食谱:
请注意,我并没有特别尝试按文件大小进行过滤,但是您可以调查TreeWalk