code.gitea.io/gitea@v1.22.3/modules/git/batch.go (about) 1 // Copyright 2024 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package git 5 6 import ( 7 "bufio" 8 "context" 9 ) 10 11 type Batch struct { 12 cancel context.CancelFunc 13 Reader *bufio.Reader 14 Writer WriteCloserError 15 } 16 17 func (repo *Repository) NewBatch(ctx context.Context) (*Batch, error) { 18 // Now because of some insanity with git cat-file not immediately failing if not run in a valid git directory we need to run git rev-parse first! 19 if err := ensureValidGitRepository(ctx, repo.Path); err != nil { 20 return nil, err 21 } 22 23 var batch Batch 24 batch.Writer, batch.Reader, batch.cancel = catFileBatch(ctx, repo.Path) 25 return &batch, nil 26 } 27 28 func (repo *Repository) NewBatchCheck(ctx context.Context) (*Batch, error) { 29 // Now because of some insanity with git cat-file not immediately failing if not run in a valid git directory we need to run git rev-parse first! 30 if err := ensureValidGitRepository(ctx, repo.Path); err != nil { 31 return nil, err 32 } 33 34 var check Batch 35 check.Writer, check.Reader, check.cancel = catFileBatchCheck(ctx, repo.Path) 36 return &check, nil 37 } 38 39 func (b *Batch) Close() { 40 if b.cancel != nil { 41 b.cancel() 42 b.Reader = nil 43 b.Writer = nil 44 b.cancel = nil 45 } 46 }