Index: Add DuplicateBlobs()
This commit is contained in:
parent
f5daf33322
commit
4bdd59b4ad
2 changed files with 34 additions and 0 deletions
|
@ -147,3 +147,22 @@ func Load(repo *repository.Repository) (*Index, error) {
|
||||||
|
|
||||||
return idx, nil
|
return idx, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DuplicateBlobs returns a list of blobs that are stored more than once in the
|
||||||
|
// repo.
|
||||||
|
func (idx *Index) DuplicateBlobs() (dups map[pack.Handle]int) {
|
||||||
|
dups = make(map[pack.Handle]int)
|
||||||
|
seen := pack.NewBlobSet()
|
||||||
|
|
||||||
|
for _, p := range idx.Packs {
|
||||||
|
for _, entry := range p.Entries {
|
||||||
|
h := pack.Handle{ID: entry.ID, Type: entry.Type}
|
||||||
|
if seen.Has(h) {
|
||||||
|
dups[h]++
|
||||||
|
}
|
||||||
|
seen.Insert(h)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dups
|
||||||
|
}
|
||||||
|
|
|
@ -154,3 +154,18 @@ func BenchmarkIndexNew(b *testing.B) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIndexDuplicateBlobs(t *testing.T) {
|
||||||
|
repo, cleanup := createFilledRepo(t, 3, 0.05)
|
||||||
|
defer cleanup()
|
||||||
|
|
||||||
|
idx, err := New(repo)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
dups := idx.DuplicateBlobs()
|
||||||
|
if len(dups) == 0 {
|
||||||
|
t.Errorf("no duplicate blobs found")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue