Skip to content

Commit 37ffc85

Browse files
committed
as per review
Signed-off-by: Andrew Thornton <[email protected]>
1 parent 7002cd2 commit 37ffc85

File tree

5 files changed

+36
-47
lines changed

5 files changed

+36
-47
lines changed

modules/git/pipeline/lfs.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,7 @@ func FindLFSFile(repo *git.Repository, hash git.SHA1) ([]*LFSResult, error) {
103103
if err != nil {
104104
return nil, err
105105
}
106-
107-
defer func() {
108-
for _, pipe := range pipes {
109-
_ = pipe.Close()
110-
}
111-
} ()
106+
defer pipes.Close()
112107

113108
shasToNameReader, shasToNameWriter := pipes[0].ReaderWriter()
114109
nameRevStdinReader, nameRevStdinWriter := pipes[1].ReaderWriter()

modules/git/pipeline/lfs_nogogit.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -202,12 +202,7 @@ func FindLFSFile(repo *git.Repository, hash git.SHA1) ([]*LFSResult, error) {
202202
if err != nil {
203203
return nil, err
204204
}
205-
206-
defer func() {
207-
for _, pipe := range pipes {
208-
_ = pipe.Close()
209-
}
210-
}()
205+
defer pipes.Close()
211206

212207
shasToNameReader, shasToNameWriter := pipes[0].ReaderWriter()
213208
nameRevStdinReader, nameRevStdinWriter := pipes[1].ReaderWriter()

modules/git/utils_pipe.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ func NewPipePair() (*PipePair, error) {
210210
}
211211

212212
// NewPipePairs will return a slice of n PipePairs or an error
213-
func NewPipePairs(n int) ([]*PipePair, error) {
213+
func NewPipePairs(n int) (PipePairs, error) {
214214
pipePairs := make([]*PipePair, 0, n)
215215
for i := 0; i < n; i++ {
216216
pipe, err := NewPipePair()
@@ -225,3 +225,19 @@ func NewPipePairs(n int) ([]*PipePair, error) {
225225
}
226226
return pipePairs, nil
227227
}
228+
229+
type PipePairs []*PipePair
230+
231+
// Close closes the PipePairs
232+
func (pairs PipePairs) Close() error {
233+
return pairs.CloseWithError(nil)
234+
}
235+
236+
// CloseWithError closes the pipe pair
237+
func (pairs PipePairs) CloseWithError(err error) error {
238+
for _, p := range pairs {
239+
_ = p.closeRead(err)
240+
_ = p.closeWrite(err)
241+
}
242+
return nil
243+
}

modules/lfs/pointer_scanner_nogogit.go

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,24 @@ import (
2323
func SearchPointerBlobs(ctx context.Context, repo *git.Repository, pointerChan chan<- PointerBlob, errChan chan<- error) {
2424
basePath := repo.Path
2525

26-
fail := func(err error) {
27-
errChan <- err
28-
close(pointerChan)
29-
close(errChan)
26+
// We will need to run batch-check on all the objects in the repository
27+
// in Git 2.6.0+ we can use `git cat-file --batch-check --batch-all-objects`
28+
// However in earlier versions we'll need to use rev-list to get the objects.
29+
gitHasBatchCheckAllObjects := git.CheckGitVersionAtLeast("2.6.0") == nil
30+
31+
numPipesRequired := 3
32+
if !gitHasBatchCheckAllObjects {
33+
numPipesRequired += 2
3034
}
3135

32-
pipes, err := git.NewPipePairs(3)
36+
pipes, err := git.NewPipePairs(numPipesRequired)
3337
if err != nil {
34-
fail(err)
38+
errChan <- err
39+
close(pointerChan)
40+
close(errChan)
3541
return
3642
}
37-
38-
closeAll := func(err error) {
39-
for _, closer := range pipes {
40-
_ = closer.CloseWithError(err)
41-
}
42-
}
43-
defer closeAll(nil)
43+
defer pipes.Close()
4444

4545
catFileCheckReader, catFileCheckWriter := pipes[0].ReaderWriter()
4646
shasToBatchReader, shasToBatchWriter := pipes[1].ReaderWriter()
@@ -62,20 +62,9 @@ func SearchPointerBlobs(ctx context.Context, repo *git.Repository, pointerChan c
6262
go pipeline.BlobsLessThan1024FromCatFileBatchCheck(catFileCheckReader, shasToBatchWriter, &wg)
6363

6464
// 1. Run batch-check on all objects in the repository
65-
if git.CheckGitVersionAtLeast("2.6.0") != nil {
66-
67-
morePipes, err := git.NewPipePairs(2)
68-
if err != nil {
69-
wg.Done()
70-
closeAll(err)
71-
wg.Wait()
72-
fail(err)
73-
return
74-
}
75-
76-
revListReader, revListWriter := morePipes[0].ReaderWriter()
77-
shasToCheckReader, shasToCheckWriter := morePipes[1].ReaderWriter()
78-
pipes = append(pipes, morePipes...)
65+
if !gitHasBatchCheckAllObjects {
66+
revListReader, revListWriter := pipes[3].ReaderWriter()
67+
shasToCheckReader, shasToCheckWriter := pipes[4].ReaderWriter()
7968

8069
wg.Add(2)
8170
go pipeline.CatFileBatchCheck(ctx, shasToCheckReader, catFileCheckWriter, &wg, basePath)

services/pull/lfs.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,7 @@ func LFSPush(ctx context.Context, tmpBasePath, mergeHeadSHA, mergeBaseSHA string
3232
if err != nil {
3333
return err
3434
}
35-
36-
closeAll := func(err error) {
37-
for _, closer := range pipes {
38-
_ = closer.CloseWithError(err)
39-
}
40-
}
41-
defer closeAll(nil)
35+
defer pipes.Close()
4236

4337
revListReader, revListWriter := pipes[0].ReaderWriter()
4438
shasToCheckReader, shasToCheckWriter := pipes[1].ReaderWriter()

0 commit comments

Comments
 (0)