|
|
@@ -3,6 +3,8 @@ package repo |
|
|
|
import ( |
|
|
|
"time" |
|
|
|
|
|
|
|
"code.gitea.io/gitea/services/mailer" |
|
|
|
|
|
|
|
"code.gitea.io/gitea/models" |
|
|
|
"code.gitea.io/gitea/modules/log" |
|
|
|
"code.gitea.io/gitea/modules/normalization" |
|
|
@@ -26,14 +28,17 @@ func RepoStatisticDaily(date string) { |
|
|
|
log.Info("%s", date) |
|
|
|
log.Info("begin Repo Statistic") |
|
|
|
t, _ := time.Parse("2006-01-02", date) |
|
|
|
warnEmailMessage := "项目统计信息入库失败,请尽快定位。" |
|
|
|
if err := models.DeleteRepoStatDaily(date); err != nil { |
|
|
|
log.Error("DeleteRepoStatDaily failed: %v", err.Error()) |
|
|
|
mailer.SendWarnNotifyMail(setting.Warn_Notify_Mails, warnEmailMessage) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
repos, err := models.GetAllRepositories() |
|
|
|
if err != nil { |
|
|
|
log.Error("GetAllRepositories failed: %v", err.Error()) |
|
|
|
mailer.SendWarnNotifyMail(setting.Warn_Notify_Mails, warnEmailMessage) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
@@ -47,7 +52,7 @@ func RepoStatisticDaily(date string) { |
|
|
|
var numDevMonths, numWikiViews, numContributor, numKeyContributor, numCommitsGrowth, numCommitLinesGrowth, numContributorsGrowth int64 |
|
|
|
repoGitStat, err := models.GetRepoKPIStats(repo) |
|
|
|
if err != nil { |
|
|
|
log.Error("GetRepoKPIStats failed: %s", repo.Name) |
|
|
|
log.Error("GetRepoKPIStats failed: %s", getDistinctProjectName(repo)) |
|
|
|
} else { |
|
|
|
numDevMonths = repoGitStat.DevelopAge |
|
|
|
numKeyContributor = repoGitStat.KeyContributors |
|
|
@@ -68,26 +73,26 @@ func RepoStatisticDaily(date string) { |
|
|
|
var numVersions int64 |
|
|
|
numVersions, err = models.GetReleaseCountByRepoID(repo.ID, models.FindReleasesOptions{}) |
|
|
|
if err != nil { |
|
|
|
log.Error("GetReleaseCountByRepoID failed(%s): %v", repo.Name, err) |
|
|
|
log.Error("GetReleaseCountByRepoID failed(%s): %v", getDistinctProjectName(repo), err) |
|
|
|
} |
|
|
|
|
|
|
|
var datasetSize int64 |
|
|
|
datasetSize, err = getDatasetSize(repo) |
|
|
|
if err != nil { |
|
|
|
log.Error("getDatasetSize failed(%s): %v", repo.Name, err) |
|
|
|
log.Error("getDatasetSize failed(%s): %v", getDistinctProjectName(repo), err) |
|
|
|
} |
|
|
|
|
|
|
|
var numComments int64 |
|
|
|
numComments, err = models.GetCommentCountByRepoID(repo.ID) |
|
|
|
if err != nil { |
|
|
|
log.Error("GetCommentCountByRepoID failed(%s): %v", repo.Name, err) |
|
|
|
log.Error("GetCommentCountByRepoID failed(%s): %v", getDistinctProjectName(repo), err) |
|
|
|
} |
|
|
|
|
|
|
|
beginTime, endTime := getStatTime(date) |
|
|
|
var numVisits int |
|
|
|
numVisits, err = repository.AppointProjectView(repo.OwnerName, repo.Name, beginTime, endTime) |
|
|
|
if err != nil { |
|
|
|
log.Error("AppointProjectView failed(%s): %v", repo.Name, err) |
|
|
|
log.Error("AppointProjectView failed(%s): %v", getDistinctProjectName(repo), err) |
|
|
|
} |
|
|
|
|
|
|
|
repoStat := models.RepoStatistic{ |
|
|
@@ -151,8 +156,9 @@ func RepoStatisticDaily(date string) { |
|
|
|
} |
|
|
|
|
|
|
|
if _, err = models.InsertRepoStat(&repoStat); err != nil { |
|
|
|
log.Error("InsertRepoStat failed(%s): %v", repo.Name, err) |
|
|
|
log.Error("failed statistic: %s", repo.Name) |
|
|
|
log.Error("InsertRepoStat failed(%s): %v", getDistinctProjectName(repo), err) |
|
|
|
log.Error("failed statistic: %s", getDistinctProjectName(repo)) |
|
|
|
mailer.SendWarnNotifyMail(setting.Warn_Notify_Mails, warnEmailMessage) |
|
|
|
continue |
|
|
|
} |
|
|
|
|
|
|
@@ -244,6 +250,10 @@ func RepoStatisticDaily(date string) { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
func getDistinctProjectName(repo *models.Repository) string { |
|
|
|
return repo.OwnerName + "/" + repo.Name |
|
|
|
} |
|
|
|
|
|
|
|
func getDatasetSize(repo *models.Repository) (int64, error) { |
|
|
|
dataset, err := models.GetDatasetByRepo(repo) |
|
|
|
if err != nil { |
|
|
|