public override async ValueTask <TGitObject?> GetByIdAsync <TGitObject>(GitId id) where TGitObject : class { var name = id.ToString(); string path = Path.Combine(_objectsDir, name.Substring(0, 2), name.Substring(2)); if (!File.Exists(path)) { return(null); } var fileReader = FileBucket.OpenRead(path, false); try { var rdr = new GitObjectFileBucket(fileReader); GitObject ob = await GitObject.FromBucketAsync(Repository, rdr, id).ConfigureAwait(false); if (ob is TGitObject tg) { return(tg); } rdr.Dispose(); return(null); } catch { fileReader.Dispose(); throw; } }
internal override bool ContainsId(GitId id) { var name = id.ToString(); string path = Path.Combine(_objectsDir, name.Substring(0, 2), name.Substring(2)); return(File.Exists(path)); }
internal override ValueTask <GitObjectBucket?> ResolveById(GitId id) { var name = id.ToString(); string path = Path.Combine(_objectsDir, name.Substring(0, 2), name.Substring(2)); if (!File.Exists(path)) { return(default);