| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // Copyright 2024 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package git
-
- import (
- "bufio"
- "context"
- )
-
- type Batch struct {
- cancel context.CancelFunc
- Reader *bufio.Reader
- Writer WriteCloserError
- }
-
- // NewBatch creates a new batch for the given repository, the Close must be invoked before release the batch
- func NewBatch(ctx context.Context, repoPath string) (*Batch, error) {
- // 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!
- if err := ensureValidGitRepository(ctx, repoPath); err != nil {
- return nil, err
- }
-
- var batch Batch
- batch.Writer, batch.Reader, batch.cancel = catFileBatch(ctx, repoPath)
- return &batch, nil
- }
-
- func NewBatchCheck(ctx context.Context, repoPath string) (*Batch, error) {
- // 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!
- if err := ensureValidGitRepository(ctx, repoPath); err != nil {
- return nil, err
- }
-
- var check Batch
- check.Writer, check.Reader, check.cancel = catFileBatchCheck(ctx, repoPath)
- return &check, nil
- }
-
- func (b *Batch) Close() {
- if b.cancel != nil {
- b.cancel()
- b.Reader = nil
- b.Writer = nil
- b.cancel = nil
- }
- }
|