diff options
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | internal/helper/fieldextractors/repository.go | 25 |
2 files changed, 24 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 1179aa7c2..ffca5078c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ v0.29.0 https://gitlab.com/gitlab-org/gitaly/merge_requests/267 - Don't count on PID 1 to be the reaper https://gitlab.com/gitlab-org/gitaly/merge_requests/270 +- Log top level project group for easier analysis + https://gitlab.com/gitlab-org/gitaly/merge_requests/272 v0.28.0 diff --git a/internal/helper/fieldextractors/repository.go b/internal/helper/fieldextractors/repository.go index 582a647d1..2b812d3d1 100644 --- a/internal/helper/fieldextractors/repository.go +++ b/internal/helper/fieldextractors/repository.go @@ -1,6 +1,10 @@ package fieldextractors -import pb "gitlab.com/gitlab-org/gitaly-proto/go" +import ( + "strings" + + pb "gitlab.com/gitlab-org/gitaly-proto/go" +) func formatRepoRequest(repo *pb.Repository) map[string]interface{} { if repo == nil { @@ -12,11 +16,26 @@ func formatRepoRequest(repo *pb.Repository) map[string]interface{} { } return map[string]interface{}{ - "repoStorage": repo.StorageName, - "repoPath": repo.RelativePath, + "repoStorage": repo.StorageName, + "repoPath": repo.RelativePath, + "topLevelGroup": getTopLevelGroupFromRepoPath(repo.RelativePath), } } +// getTopLevelGroupFromRepoPath gives the top-level group name, given +// a repoPath. For example: +// - "gitlab-org/gitlab-ce.git" returns "gitlab-org" +// - "gitlab-org/gitter/webapp.git" returns "gitlab-org" +// - "x.git" returns "" +func getTopLevelGroupFromRepoPath(repoPath string) string { + parts := strings.SplitN(repoPath, "/", 2) + if len(parts) != 2 { + return "" + } + + return parts[0] +} + type repositoryBasedRequest interface { GetRepository() *pb.Repository } |