read method
Implementation
Future<GitObjectResult> read(GitHash hash) async {
var sha = hash.toString();
var path =
p.join(_gitDir, 'objects', sha.substring(0, 2), sha.substring(2));
if (await _fs.isFile(path)) {
return readObjectFromPath(path);
}
// Read all the index files
var packDirPath = p.join(_gitDir, 'objects', 'pack');
var stat = await _fs.stat(packDirPath);
if (stat.changed != _packDirChanged || stat.modified != _packDirModified) {
await _loadPackFiles(packDirPath);
_packDirChanged = stat.changed;
_packDirModified = stat.modified;
}
for (var packFile in _packFiles) {
var obj = await packFile.object(hash);
if (obj != null) {
return GitObjectResult(obj);
}
}
return GitObjectResult.fail(GitObjectNotFound(hash));
}