Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit 2de4f03

Browse files
tarutistrib
authored andcommitted
Use object walker in repacking code
1 parent f28e447 commit 2de4f03

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

repository.go

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,6 +1055,15 @@ func (r *Repository) RepackObjects(cfg *RepackConfig) (err error) {
10551055
// of creating a new pack. It is used so the the PackfileWriter
10561056
// deferred close has the right scope.
10571057
func (r *Repository) createNewObjectPack(cfg *RepackConfig) (h plumbing.Hash, err error) {
1058+
ow := newObjectWalker(r.Storer)
1059+
err = ow.walkAllRefs()
1060+
if err != nil {
1061+
return h, err
1062+
}
1063+
objs := make([]plumbing.Hash, 0, len(ow.seen))
1064+
for h := range ow.seen {
1065+
objs = append(objs, h)
1066+
}
10581067
pfw, ok := r.Storer.(storer.PackfileWriter)
10591068
if !ok {
10601069
return h, fmt.Errorf("Repository storer is not a storer.PackfileWriter")
@@ -1064,18 +1073,6 @@ func (r *Repository) createNewObjectPack(cfg *RepackConfig) (h plumbing.Hash, er
10641073
return h, err
10651074
}
10661075
defer ioutil.CheckClose(wc, &err)
1067-
var objs []plumbing.Hash
1068-
iter, err := r.Storer.IterEncodedObjects(plumbing.AnyObject)
1069-
if err != nil {
1070-
return h, err
1071-
}
1072-
err = iter.ForEach(func(obj plumbing.EncodedObject) error {
1073-
objs = append(objs, obj.Hash())
1074-
return nil
1075-
})
1076-
if err != nil {
1077-
return h, err
1078-
}
10791076
scfg, err := r.Storer.Config()
10801077
if err != nil {
10811078
return h, err

0 commit comments

Comments
 (0)