Example #1
0
File: pack.go Project: jbrukh/ggit
func (idx *Idx) entryById(oid *objects.ObjectId) *PackedObjectId {
	trimmed := idx.entriesWithPrefix(oid.Bytes()[0])
	if trimmed == nil {
		return nil
	}
	id := oid.String()
	if idx.idToEntry[id] != nil {
		return idx.idToEntry[id]
	}
	gte := func(i int) bool {
		var oid *objects.ObjectId
		oid = trimmed[i].ObjectId
		return oid.String() >= id
	}
	i := sort.Search(len(trimmed), gte)
	if i >= len(trimmed) {
		return nil
	}
	result := trimmed[i]
	if result.ObjectId.String() != id {
		return nil
	}
	idx.idToEntry[id] = result
	return result
}