Skip to content

Commit fcd9c5c

Browse files
committed
vendor: update go-git to keybase/go-git master
This includes all the review changes requested from the go-git devs for the garbage collection code. They wanted to split off several of the new methods into optional interfaces, which makes it a little more complicated for us to build a "passthrough" storage layer.
1 parent 0f4c9f0 commit fcd9c5c

33 files changed

+442
-336
lines changed

libgit/ephemeral_git_config_with_fixed_pack_window.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package libgit
66

77
import (
88
"io"
9+
"time"
910

1011
gogitcfg "gopkg.in/src-d/go-git.v4/config"
1112
"gopkg.in/src-d/go-git.v4/plumbing"
@@ -20,6 +21,8 @@ type ephemeralGitConfigWithFixedPackWindow struct {
2021
storage.Storer
2122
initer storer.Initializer
2223
pfWriter storer.PackfileWriter
24+
los storer.LooseObjectStorer
25+
pos storer.PackedObjectStorer
2326
packWindow uint
2427
}
2528

@@ -53,6 +56,39 @@ func (e *ephemeralGitConfigWithFixedPackWindow) SetConfig(c *gogitcfg.Config) (
5356
return nil
5457
}
5558

59+
// ForEachObjectHash implements the `storer.LooseObjectStorer` interface.
60+
func (e *ephemeralGitConfigWithFixedPackWindow) ForEachObjectHash(
61+
f func(plumbing.Hash) error) error {
62+
return e.los.ForEachObjectHash(f)
63+
}
64+
65+
// LooseObjectHash implements the `storer.LooseObjectStorer` interface.
66+
func (e *ephemeralGitConfigWithFixedPackWindow) LooseObjectTime(
67+
h plumbing.Hash) (time.Time, error) {
68+
return e.los.LooseObjectTime(h)
69+
}
70+
71+
// DeleteLooseObject implements the `storer.LooseObjectStorer` interface.
72+
func (e *ephemeralGitConfigWithFixedPackWindow) DeleteLooseObject(
73+
h plumbing.Hash) error {
74+
return e.los.DeleteLooseObject(h)
75+
}
76+
77+
// ObjectPacks implements the `storer.PackedObjectStorer` interface.
78+
func (e *ephemeralGitConfigWithFixedPackWindow) ObjectPacks() (
79+
[]plumbing.Hash, error) {
80+
return e.pos.ObjectPacks()
81+
}
82+
83+
// DeleteOldObjectPackAndIndex implements the
84+
// `storer.PackedObjectStorer` interface.
85+
func (e *ephemeralGitConfigWithFixedPackWindow) DeleteOldObjectPackAndIndex(
86+
h plumbing.Hash, t time.Time) error {
87+
return e.pos.DeleteOldObjectPackAndIndex(h, t)
88+
}
89+
5690
var _ storage.Storer = (*ephemeralGitConfigWithFixedPackWindow)(nil)
5791
var _ storer.Initializer = (*ephemeralGitConfigWithFixedPackWindow)(nil)
5892
var _ storer.PackfileWriter = (*ephemeralGitConfigWithFixedPackWindow)(nil)
93+
var _ storer.LooseObjectStorer = (*ephemeralGitConfigWithFixedPackWindow)(nil)
94+
var _ storer.PackedObjectStorer = (*ephemeralGitConfigWithFixedPackWindow)(nil)

libgit/repo.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -808,11 +808,16 @@ func NeedsGC(storage storage.Storer, options GCOptions) (
808808
doPackRefs = numLooseRefs > options.MaxLooseRefs
809809

810810
if options.PruneMinLooseObjects >= 0 {
811+
los, ok := storage.(storer.LooseObjectStorer)
812+
if !ok {
813+
panic("storage is unexpectedly not a LooseObjectStorer")
814+
}
815+
811816
// Count the number of loose objects that are older than the
812817
// expire time, to see if pruning is needed.
813818
numLooseMaybePrune := 0
814-
err = storage.ForEachObjectHash(func(h plumbing.Hash) error {
815-
t, err := storage.LooseObjectTime(h)
819+
err = los.ForEachObjectHash(func(h plumbing.Hash) error {
820+
t, err := los.LooseObjectTime(h)
816821
if err != nil {
817822
return err
818823
}
@@ -830,7 +835,12 @@ func NeedsGC(storage storage.Storer, options GCOptions) (
830835
}
831836
}
832837

833-
packs, err := storage.ObjectPacks()
838+
pos, ok := storage.(storer.PackedObjectStorer)
839+
if !ok {
840+
panic("storage is unexpectedly not a PackedObjectStorer")
841+
}
842+
843+
packs, err := pos.ObjectPacks()
834844
if err != nil {
835845
return false, 0, false, false, 0, err
836846
}
@@ -909,6 +919,8 @@ func GCRepo(
909919
storage,
910920
fsStorage.(storer.Initializer),
911921
fsStorage.(storer.PackfileWriter),
922+
fsStorage.(storer.LooseObjectStorer),
923+
fsStorage.(storer.PackedObjectStorer),
912924
10,
913925
}
914926

vendor/gopkg.in/src-d/go-git.v4/README.md

Lines changed: 6 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/gopkg.in/src-d/go-git.v4/blame.go

Lines changed: 2 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/gopkg.in/src-d/go-git.v4/config/config.go

Lines changed: 3 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/gopkg.in/src-d/go-git.v4/config/modules.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/gopkg.in/src-d/go-git.v4/config/refspec.go

Lines changed: 3 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/gopkg.in/src-d/go-git.v4/plumbing/format/config/encoder.go

Lines changed: 2 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/decoder.go

Lines changed: 4 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/gopkg.in/src-d/go-git.v4/plumbing/format/objfile/reader.go

Lines changed: 1 addition & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)