JGit: самый быстрый способ получить большой двоичный объект File Object без доступа к его данным

#java #git #jgit

#java #git #jgit

Вопрос:

Мне нужна последняя фиксация, которая повлияла на путь, похожий на git log -1 -- path .

В настоящее время я делаю это

 TreeWalk.forPath(repo, filepath, rootCommit.getTree()).getObjectId(0)
  

Есть ли более быстрый способ добиться этого?

Ответ №1:

Другим вариантом было бы использовать команду Porcelain для «log», она использует RevWalk внутри, поэтому она может выполняться с разными таймингами, однако я не уверен, какой из них будет быстрее, это также может в некоторой степени зависеть от размера и структуры репозитория…

     Iterable<RevCommit> logs = new Git(repository).log()
            .addPath("README.md")
            .setMaxCount(1)
            .call();
    for(RevCommit rev : logs) {
        System.out.println("Commit: "   rev);
    }