Я заметил, что могу получить содержимое определенного листа (blob)
объект из определенной ветви путем итерации по дочерним элементам дерева, как
так:
_repository = new Repository(git_url);
IEnumerable<AbstractObject> currentBranchItems = _repository.CurrentBranch.CurrentCommit.Tree.Children;
foreach (var currentBranchItem in currentBranchItems)
{
var currentBranchLeaf = currentBranchItem as Leaf;
_lastLeafHash = currentBranchLeaf.Hash;
Console.WriteLine("Name: " + currentBranchLeaf.Name + " Hash: " + currentBranchLeaf.Hash);
}
Однако, это кажется довольно неэффективным, если у меня есть хэш листа
что я хотел бы получить. Есть ли способ, которым я могу получить доступ к листу
прямо из репозитория если есть хеш? Следующее делает
не работает:
private static void GetLeafByHash(string hash)
{
var leafAbs = _repository.Get<AbstractObject>(hash);
var leaf = leafAbs as Leaf;
Console.WriteLine("Found Leaf Named: " + leaf.Name);
Console.WriteLine("The data is this big: " + leaf.RawData.Length);
Console.Read();
}
Метод Get всегда возвращает NULL. Так есть ли способ достичь
прямой поиск листа по хешу? В документации говорится
следующее о методе Get:
Доступ к git-объекту по имени, идентификатору или пути. Используйте параметр типа для
расскажите, какой объект вы хотели бы получить. Поддерживаемые типы
Филиалы, коммиты или теги могут быть доступны по имени или по ссылке
выражение. В настоящее время поддерживаются следующие комбинации:
Не поддерживается
Объекты Tree или Leaf (Blob) могут быть обработаны длинным хешем или их
относительный путь к хранилищу
Непонятно .. означает ли это, что объекты Tree или Leaf могут или
невозможно получить доступ через хеш?
Большое спасибо!