Java 在内存中克隆git存储库

Java 在内存中克隆git存储库,java,git,jgit,jimfs,Java,Git,Jgit,Jimfs,我一直在尝试将一个小小的git配置存储库克隆到内存中,使用 FileSystem fs = Jimfs.newFileSystem(Configuration.unix()); Path gitPath = Files.createDirectories(fs.getPath("/git")); Git.cloneRepository().setURI(...).setBranch(...).setDirectory(gitPath.toFile())

我一直在尝试将一个小小的git配置存储库克隆到内存中,使用

FileSystem fs = Jimfs.newFileSystem(Configuration.unix());
Path gitPath = Files.createDirectories(fs.getPath("/git")); 
Git.cloneRepository().setURI(...).setBranch(...).setDirectory(gitPath.toFile())
                    .setCredentialsProvider(...).call()
但由于JIMFS使用路径(因为它不使用默认文件系统),而JGIT使用,JIMFS不实现to toFile()调用:


因此,我得到的是
不支持操作异常
。有没有一种简单的方法可以让这个(或类似的)设置不依赖于磁盘上的临时目录而工作?

JGit提供了一个
InMemoryRepository
供测试和实验使用。但即使是这个存储库后端也会将非裸存储库的工作目录存储在磁盘上

除非JGit将其
FileRepository
实现更改为使用Paths-API,否则我看不到使用Jimfs存储存储库的方法


有些命令允许指定一个
工作树编辑器
,理论上,它允许对备用存储器上的工作树进行读取访问。但是,并非所有支持此概念的命令都缺少写访问权限。

您可以将存储库克隆到内存中,并将其逐个文件复制到自己的fs中。 请参见此处的将文件读入内存内repo的示例:

@Override
public File toFile() {
    // documented as unsupported for anything but the default file system
    throw new UnsupportedOperationException();
}