在内存中克隆git仓库

5

我一直在尝试使用JGITJIMFS将一个小的git配置库克隆到内存中,代码示例如下:

FileSystem fs = Jimfs.newFileSystem(Configuration.unix());
Path gitPath = Files.createDirectories(fs.getPath("/git")); 
Git.cloneRepository().setURI(...).setBranch(...).setDirectory(gitPath.toFile())
                    .setCredentialsProvider(...).call()

但是由于JIMFS使用路径Path API(因为它不使用默认文件系统),而JGIT使用File API,因此JIMFS不支持toFile()调用:

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

我得到的是 UnsupportedOperationException。有没有简单的方法让这个(或类似的)设置工作,而不必借助磁盘上的临时目录?

2个回答

2
JGit提供了一个InMemoryRepository用于测试和实验性使用。但是,即使是这个存储库后端也会将非裸存储库的工作目录存储在磁盘上。
除非JGit更改其FileRepository实现以使用Paths API,否则我不认为有办法使用Jimfs来存储存储库。
一些命令允许指定WorkingTreeIterator,理论上,这将允许对备用存储上的工作树进行读取访问。然而,并非所有命令都支持此概念,同时缺少写入访问。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接