如何在不克隆存储库的情况下列出所有提交?

时间:2018-03-12 14:39:56

标签: java git jgit

鉴于远程位置,我想列出该存储库的所有提交,而不必使用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
    }
}

我认为这是因为我从来没有使用clonepull或类似的事实来实际更新本地文件系统所需的信息。

有没有办法实现这一点而无需克隆整个存储库?也许使用fetch? (允许任何技巧)

使用案例

我需要将云存储与git存储库的内容同步。克隆并上载存储库的所有文件后,将从执行上载的计算机中删除该文件。除非有可用的钩子,否则我会定期检查最新上传后是否发生了最新提交。如果是这样,我重新克隆存储库并再次上传。

如果有完全不同的,更好的方法来实现这一点,请告诉我。

0 个答案:

没有答案