在内存中克隆 git 个存储库
Clone git repository in-memory
我一直在尝试使用类似
的JGIT and JIMFS将一个很小的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 (since it doesn't use the default Filesystem), while JGIT uses the File API,JIMFS 没有实现 toFile() 调用:
@Override
public File toFile() {
// documented as unsupported for anything but the default file system
throw new UnsupportedOperationException();
}
所以我得到的是这个UnsupportedOperationException
。有没有一种简单的方法可以让这个(或类似的)设置工作而无需求助于磁盘上的临时目录?
JGit 提供了一个 InMemoryRepository
用于测试和实验用途。但即使是这个存储库后端也会将非裸存储库的工作目录存储在磁盘上。
除非 JGit 更改其 FileRepository
实现以使用路径 API,否则我看不到使用 Jimfs 存储存储库的方法。
一些命令允许指定 WorkingTreeIterator
,理论上,这将允许对备用存储上的工作树进行读取访问。但是,并非所有命令都支持此概念写访问权限目前也缺失。
您可以将存储库克隆到内存中,然后将其逐个文件复制到自己的文件系统中。
在此处查看将文件读入内部内存存储库的示例:
我一直在尝试使用类似
的JGIT and JIMFS将一个很小的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 (since it doesn't use the default Filesystem), while JGIT uses the File API,JIMFS 没有实现 toFile() 调用:
@Override
public File toFile() {
// documented as unsupported for anything but the default file system
throw new UnsupportedOperationException();
}
所以我得到的是这个UnsupportedOperationException
。有没有一种简单的方法可以让这个(或类似的)设置工作而无需求助于磁盘上的临时目录?
JGit 提供了一个 InMemoryRepository
用于测试和实验用途。但即使是这个存储库后端也会将非裸存储库的工作目录存储在磁盘上。
除非 JGit 更改其 FileRepository
实现以使用路径 API,否则我看不到使用 Jimfs 存储存储库的方法。
一些命令允许指定 WorkingTreeIterator
,理论上,这将允许对备用存储上的工作树进行读取访问。但是,并非所有命令都支持此概念写访问权限目前也缺失。
您可以将存储库克隆到内存中,然后将其逐个文件复制到自己的文件系统中。
在此处查看将文件读入内部内存存储库的示例: