Я пытаюсь сгенерировать 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.