mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Add generic set type (#21408)
This PR adds a generic set type to get rid of maps used as sets. Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		@@ -14,6 +14,8 @@ import (
 | 
			
		||||
	"sort"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/modules/container"
 | 
			
		||||
 | 
			
		||||
	"github.com/djherbis/buffer"
 | 
			
		||||
	"github.com/djherbis/nio/v3"
 | 
			
		||||
)
 | 
			
		||||
@@ -339,7 +341,7 @@ func WalkGitLog(ctx context.Context, repo *Repository, head *Commit, treepath st
 | 
			
		||||
	lastEmptyParent := head.ID.String()
 | 
			
		||||
	commitSinceLastEmptyParent := uint64(0)
 | 
			
		||||
	commitSinceNextRestart := uint64(0)
 | 
			
		||||
	parentRemaining := map[string]bool{}
 | 
			
		||||
	parentRemaining := make(container.Set[string])
 | 
			
		||||
 | 
			
		||||
	changed := make([]bool, len(paths))
 | 
			
		||||
 | 
			
		||||
@@ -365,7 +367,7 @@ heaploop:
 | 
			
		||||
		if current == nil {
 | 
			
		||||
			break heaploop
 | 
			
		||||
		}
 | 
			
		||||
		delete(parentRemaining, current.CommitID)
 | 
			
		||||
		parentRemaining.Remove(current.CommitID)
 | 
			
		||||
		if current.Paths != nil {
 | 
			
		||||
			for i, found := range current.Paths {
 | 
			
		||||
				if !found {
 | 
			
		||||
@@ -410,14 +412,12 @@ heaploop:
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				g = NewLogNameStatusRepoParser(ctx, repo.Path, lastEmptyParent, treepath, remainingPaths...)
 | 
			
		||||
				parentRemaining = map[string]bool{}
 | 
			
		||||
				parentRemaining = make(container.Set[string])
 | 
			
		||||
				nextRestart = (remaining * 3) / 4
 | 
			
		||||
				continue heaploop
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		for _, parent := range current.ParentIDs {
 | 
			
		||||
			parentRemaining[parent] = true
 | 
			
		||||
		}
 | 
			
		||||
		parentRemaining.AddMultiple(current.ParentIDs...)
 | 
			
		||||
	}
 | 
			
		||||
	g.Close()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,8 @@ import (
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/modules/container"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// CodeActivityStats represents git statistics data
 | 
			
		||||
@@ -80,7 +82,7 @@ func (repo *Repository) GetCodeActivityStats(fromTime time.Time, branch string)
 | 
			
		||||
			stats.Additions = 0
 | 
			
		||||
			stats.Deletions = 0
 | 
			
		||||
			authors := make(map[string]*CodeActivityAuthor)
 | 
			
		||||
			files := make(map[string]bool)
 | 
			
		||||
			files := make(container.Set[string])
 | 
			
		||||
			var author string
 | 
			
		||||
			p := 0
 | 
			
		||||
			for scanner.Scan() {
 | 
			
		||||
@@ -119,9 +121,7 @@ func (repo *Repository) GetCodeActivityStats(fromTime time.Time, branch string)
 | 
			
		||||
								stats.Deletions += c
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
						if _, ok := files[parts[2]]; !ok {
 | 
			
		||||
							files[parts[2]] = true
 | 
			
		||||
						}
 | 
			
		||||
						files.Add(parts[2])
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user