aboutsummaryrefslogtreecommitdiffstats
path: root/repository.go
diff options
context:
space:
mode:
authorJeremy Stribling <strib@alum.mit.edu>2017-11-29 14:52:01 -0800
committerJeremy Stribling <strib@alum.mit.edu>2017-11-29 16:04:09 -0800
commit88acc31c76a3033a4d02e0d6cc751c74b9aeeea5 (patch)
treea2ae4d5027f28f26e46f2ae0e8c5a74ab37eaee4 /repository.go
parent4c1569511db5e1d26e42e9cd8dadb9e65ccafb20 (diff)
downloadgo-git-88acc31c76a3033a4d02e0d6cc751c74b9aeeea5.tar.gz
repository: add tests for pruning and object re-packing
Also, object re-packing should clean up any loose objects that were packed.
Diffstat (limited to 'repository.go')
-rw-r--r--repository.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/repository.go b/repository.go
index d7cca89..7cdc0d5 100644
--- a/repository.go
+++ b/repository.go
@@ -1088,5 +1088,22 @@ func (r *Repository) createNewObjectPack(cfg *RepackConfig) (h plumbing.Hash, er
if err != nil {
return h, err
}
+
+ // Delete the packed, loose objects.
+ if los, ok := r.Storer.(storer.LooseObjectStorer); ok {
+ err = los.ForEachObjectHash(func(hash plumbing.Hash) error {
+ if ow.isSeen(hash) {
+ err := los.DeleteLooseObject(hash)
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+ })
+ if err != nil {
+ return h, err
+ }
+ }
+
return h, err
}