summaryrefslogtreecommitdiffstats
path: root/vendor/code.gitea.io/git/commit_info.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2019-03-11 11:44:58 +0800
committerGitHub <noreply@github.com>2019-03-11 11:44:58 +0800
commit4334fe754e4a338a13073f649707acd26d1f4a12 (patch)
treecea77d699b0af6b9d3c3fab591514a889c869a4c /vendor/code.gitea.io/git/commit_info.go
parent2315019fefb07dfe08e4ecefa199fd947c0c79b8 (diff)
downloadgitea-4334fe754e4a338a13073f649707acd26d1f4a12.tar.gz
gitea-4334fe754e4a338a13073f649707acd26d1f4a12.zip
update git vendor to fix wrong release commit id and add migrations (#6224)
* update git vendor to fix wrong release commit id and add migrations * fix count * fix migration release * fix tests
Diffstat (limited to 'vendor/code.gitea.io/git/commit_info.go')
-rw-r--r--vendor/code.gitea.io/git/commit_info.go20
1 files changed, 15 insertions, 5 deletions
diff --git a/vendor/code.gitea.io/git/commit_info.go b/vendor/code.gitea.io/git/commit_info.go
index 6b42b57c90..971082be1f 100644
--- a/vendor/code.gitea.io/git/commit_info.go
+++ b/vendor/code.gitea.io/git/commit_info.go
@@ -72,13 +72,20 @@ func (state *getCommitsInfoState) getTargetedEntryPath() string {
}
// repeatedly perform targeted searches for unpopulated entries
-func targetedSearch(state *getCommitsInfoState, done chan error) {
+func targetedSearch(state *getCommitsInfoState, done chan error, cache LastCommitCache) {
for {
entryPath := state.getTargetedEntryPath()
if len(entryPath) == 0 {
done <- nil
return
}
+ if cache != nil {
+ commit, err := cache.Get(state.headCommit.repo.Path, state.headCommit.ID.String(), entryPath)
+ if err == nil && commit != nil {
+ state.update(entryPath, commit)
+ continue
+ }
+ }
command := NewCommand("rev-list", "-1", state.headCommit.ID.String(), "--", entryPath)
output, err := command.RunInDir(state.headCommit.repo.Path)
if err != nil {
@@ -96,6 +103,9 @@ func targetedSearch(state *getCommitsInfoState, done chan error) {
return
}
state.update(entryPath, commit)
+ if cache != nil {
+ cache.Put(state.headCommit.repo.Path, state.headCommit.ID.String(), entryPath, commit)
+ }
}
}
@@ -118,9 +128,9 @@ func initGetCommitInfoState(entries Entries, headCommit *Commit, treePath string
}
// GetCommitsInfo gets information of all commits that are corresponding to these entries
-func (tes Entries) GetCommitsInfo(commit *Commit, treePath string) ([][]interface{}, error) {
+func (tes Entries) GetCommitsInfo(commit *Commit, treePath string, cache LastCommitCache) ([][]interface{}, error) {
state := initGetCommitInfoState(tes, commit, treePath)
- if err := getCommitsInfo(state); err != nil {
+ if err := getCommitsInfo(state, cache); err != nil {
return nil, err
}
if len(state.commits) < len(state.entryPaths) {
@@ -188,7 +198,7 @@ func (state *getCommitsInfoState) update(entryPath string, commit *Commit) bool
const getCommitsInfoPretty = "--pretty=format:%H %ct %s"
-func getCommitsInfo(state *getCommitsInfoState) error {
+func getCommitsInfo(state *getCommitsInfoState, cache LastCommitCache) error {
ctx, cancel := context.WithTimeout(context.Background(), 1*time.Minute)
defer cancel()
@@ -215,7 +225,7 @@ func getCommitsInfo(state *getCommitsInfoState) error {
numThreads := runtime.NumCPU()
done := make(chan error, numThreads)
for i := 0; i < numThreads; i++ {
- go targetedSearch(state, done)
+ go targetedSearch(state, done, cache)
}
scanner := bufio.NewScanner(readCloser)