J Git в Github Blob Object Последовательность SHA1 - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь сгенерировать URL-адрес Github для указанного большого двоичного объекта c в коммите, используя J Git. Я не уверен, являются ли идентификаторы объектов, сгенерированные J Git AnyObjectId.getName () , теми же хешами SHA1, которые используются для идентификации объектов в GitHub. По логике было бы понятно, что они есть. Тем не менее, они не выглядят выровненными.

Вот мой код:

Git gitInstance = Util.getGitInstance(); // get the git instance instantiated earlier
String blobTarget = "file.txt";
RevCommit thisCommit = Util.getTargetCommit(); // get the commit I'm looking for
TreeWalk treeWalk = new TreeWalk(gitInstance.getRepository());
treeWalk.addTree(thisCommit.getTree());
treeWalk.setRecursive(true);

while( treeWalk.next() ) {
    String blobSHA1 = treeWalk.getObjectId(0).getName(); // This value does not match GitHub's SHA1 for the blob
    if( blobTarget.equals(treeWalk.getPathString()) {
        String gitHubURL = "https://github.com/myUser/myRepo/commit/" + 
                                            thisCommit.getName() + "#diff-" +  blobSHA1);
        System.out.println(gitHubURL);
    }
}

Ожидаемый:

https://github.com/myUser/myRepo/commit/060ebb2f784764b704ddf92d883c61fd71798eb9#diff-ecdc430280760f99f1dae6953ca4ce00

Фактический:

https://github.com/myUser/myRepo/commit/060ebb2f784764b704ddf92d883c61fd71798eb9#diff-e220724cbf8a5229183f199c11f8a3b28b5f6145

Ссылка Actual содержит неправильный BLA-объект SHA1, поэтому созданный URL-адрес ссылается на правильный коммит, но не ссылается ни на один действительный BLOB-объект. Я считаю, что treeWalk.getObjectId(0) является ссылкой на тот же самый большой двоичный объект, который доступен на GitHub, поскольку чтение объекта этого идентификатора с помощью ObjectLoader создает идентичное содержимое большого двоичного объекта на GitHub.

...