mirror of https://github.com/go-gitea/gitea
Refactor the usage of batch catfile (#31754)
When opening a repository, it will call `ensureValidRepository` and also `CatFileBatch`. But sometimes these will not be used until repository closed. So it's a waste of CPU to invoke 3 times git command for every open repository. This PR removed all of these from `OpenRepository` but only kept checking whether the folder exists. When a batch is necessary, the necessary functions will be invoked.pull/31373/head
parent
8b92eba21f
commit
c03baab678
@ -0,0 +1,46 @@ |
||||
// 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 |
||||
} |
||||
|
||||
func (repo *Repository) NewBatch(ctx context.Context) (*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, repo.Path); err != nil { |
||||
return nil, err |
||||
} |
||||
|
||||
var batch Batch |
||||
batch.Writer, batch.Reader, batch.cancel = catFileBatch(ctx, repo.Path) |
||||
return &batch, nil |
||||
} |
||||
|
||||
func (repo *Repository) NewBatchCheck(ctx context.Context) (*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, repo.Path); err != nil { |
||||
return nil, err |
||||
} |
||||
|
||||
var check Batch |
||||
check.Writer, check.Reader, check.cancel = catFileBatchCheck(ctx, repo.Path) |
||||
return &check, nil |
||||
} |
||||
|
||||
func (b *Batch) Close() { |
||||
if b.cancel != nil { |
||||
b.cancel() |
||||
b.Reader = nil |
||||
b.Writer = nil |
||||
b.cancel = nil |
||||
} |
||||
} |
Loading…
Reference in new issue