鉴于远程位置,我想列出该存储库的所有提交,而不必使用JGit克隆它。
据我所知,访问提交只能通过RevWalk
进行。要获取此类的对象,需要Repository
的对象。现在我尝试在本地创建一个新的空库:
Git git = Git.init().setDirectory(localDir).call();
...之后添加一个远程位置:
git.remoteAdd()
.setName("origin");
.setUri(new URIish(remoteLocationStr));
.call();
但是,当我尝试启动RevWalk
时,它是空的。
try (RevWalk revWalk = new RevWalk(git.getRepository())) {
for( RevCommit commit : revWalk ) {
//... nothing to iterate here
}
}
我认为这是因为我从来没有使用clone
,pull
或类似的事实来实际更新本地文件系统所需的信息。
有没有办法实现这一点而无需克隆整个存储库?也许使用fetch
? (允许任何技巧)
使用案例
我需要将云存储与git存储库的内容同步。克隆并上载存储库的所有文件后,将从执行上载的计算机中删除该文件。除非有可用的钩子,否则我会定期检查最新上传后是否发生了最新提交。如果是这样,我重新克隆存储库并再次上传。
如果有完全不同的,更好的方法来实现这一点,请告诉我。