aboutsummaryrefslogtreecommitdiffstats
path: root/models/repo_indexer.go
diff options
context:
space:
mode:
authorEthan Koenig <ethantkoenig@gmail.com>2018-02-05 10:29:17 -0800
committerLauris BH <lauris@nix.lv>2018-02-05 20:29:17 +0200
commita89592d4abfef01e68e3c53a3cdb3846b03abd2b (patch)
tree4d72baa635595eb9088c0a89977996d07dddeb9d /models/repo_indexer.go
parent283e87d8145ac5dd61f86f61e347ffa684ac5684 (diff)
downloadgitea-a89592d4abfef01e68e3c53a3cdb3846b03abd2b.tar.gz
gitea-a89592d4abfef01e68e3c53a3cdb3846b03abd2b.zip
Reduce repo indexer disk usage (#3452)
Diffstat (limited to 'models/repo_indexer.go')
-rw-r--r--models/repo_indexer.go16
1 files changed, 10 insertions, 6 deletions
diff --git a/models/repo_indexer.go b/models/repo_indexer.go
index fee4784799..ecd629587e 100644
--- a/models/repo_indexer.go
+++ b/models/repo_indexer.go
@@ -14,6 +14,8 @@ import (
"code.gitea.io/gitea/modules/indexer"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
+
+ "github.com/ethantkoenig/rupture"
)
// RepoIndexerStatus status of a repo's entry in the repo indexer
@@ -187,7 +189,7 @@ func getRepoChanges(repo *Repository, revision string) (*repoChanges, error) {
return nonGenesisChanges(repo, revision)
}
-func addUpdate(update fileUpdate, repo *Repository, batch *indexer.Batch) error {
+func addUpdate(update fileUpdate, repo *Repository, batch rupture.FlushingBatch) error {
stdout, err := git.NewCommand("cat-file", "-s", update.BlobSha).
RunInDir(repo.RepoPath())
if err != nil {
@@ -206,24 +208,26 @@ func addUpdate(update fileUpdate, repo *Repository, batch *indexer.Batch) error
} else if !base.IsTextFile(fileContents) {
return nil
}
- return batch.Add(indexer.RepoIndexerUpdate{
+ indexerUpdate := indexer.RepoIndexerUpdate{
Filepath: update.Filename,
Op: indexer.RepoIndexerOpUpdate,
Data: &indexer.RepoIndexerData{
RepoID: repo.ID,
Content: string(fileContents),
},
- })
+ }
+ return indexerUpdate.AddToFlushingBatch(batch)
}
-func addDelete(filename string, repo *Repository, batch *indexer.Batch) error {
- return batch.Add(indexer.RepoIndexerUpdate{
+func addDelete(filename string, repo *Repository, batch rupture.FlushingBatch) error {
+ indexerUpdate := indexer.RepoIndexerUpdate{
Filepath: filename,
Op: indexer.RepoIndexerOpDelete,
Data: &indexer.RepoIndexerData{
RepoID: repo.ID,
},
- })
+ }
+ return indexerUpdate.AddToFlushingBatch(batch)
}
// parseGitLsTreeOutput parses the output of a `git ls-tree -r --full-name` command