diff options
author | Ethan Koenig <ethantkoenig@gmail.com> | 2018-02-05 10:29:17 -0800 |
---|---|---|
committer | Lauris BH <lauris@nix.lv> | 2018-02-05 20:29:17 +0200 |
commit | a89592d4abfef01e68e3c53a3cdb3846b03abd2b (patch) | |
tree | 4d72baa635595eb9088c0a89977996d07dddeb9d /models/repo_indexer.go | |
parent | 283e87d8145ac5dd61f86f61e347ffa684ac5684 (diff) | |
download | gitea-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.go | 16 |
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 |