@@ -22,16 +22,19 @@ import (
22
22
23
23
github_util "k8s.io/contrib/github"
24
24
"k8s.io/contrib/mungegithub/config"
25
+ "k8s.io/kubernetes/pkg/util/sets"
25
26
26
27
"github.com/golang/glog"
27
28
"github.com/google/go-github/github"
28
29
"github.com/spf13/cobra"
29
30
)
30
31
31
- type PRSizeMunger struct {}
32
+ type PRSizeMunger struct {
33
+ genFiles * sets.String
34
+ }
32
35
33
36
func init () {
34
- RegisterMungerOrDie (PRSizeMunger {})
37
+ RegisterMungerOrDie (& PRSizeMunger {})
35
38
}
36
39
37
40
func (PRSizeMunger ) Name () string { return "size" }
@@ -42,67 +45,62 @@ const labelSizePrefix = "size/"
42
45
43
46
// getGeneratedFiles returns a list of all automatically generated files in the repo. These include
44
47
// docs, deep_copy, and conversions
45
- func getGeneratedFiles (config * config.MungeConfig , c github.RepositoryCommit ) []string {
46
- genFiles := []string {
47
- "pkg/api/v1/deep_copy_generated.go" ,
48
- "pkg/api/deep_copy_generated.go" ,
49
- "pkg/expapi/v1/deep_copy_generated.go" ,
50
- "pkg/expapi/deep_copy_generated.go" ,
51
- "pkg/api/v1/conversion_generated.go" ,
52
- "pkg/expapi/v1/conversion_generated.go" ,
53
- "api/swagger-spec/resourceListing.json" ,
54
- "api/swagger-spec/version.json" ,
55
- "api/swagger-spec/api.json" ,
56
- "api/swagger-spec/v1.json" ,
48
+ //
49
+ // It would be 'better' to call this for every commit but that takes
50
+ // a whole lot of time for almost always the same information, and if
51
+ // our results are slightly wrong, who cares? Instead look for the
52
+ // generated files once and if someone changed what files are generated
53
+ // we'll size slightly wrong. No biggie.
54
+ func (s * PRSizeMunger ) getGeneratedFiles (config * config.MungeConfig ) sets.String {
55
+ if s .genFiles != nil {
56
+ return * s .genFiles
57
57
}
58
- docs , err := config .GetFileContents (".generated_docs" , * c .SHA )
58
+ files := sets .NewString ()
59
+ files .Insert ("pkg/api/v1/deep_copy_generated.go" )
60
+ files .Insert ("pkg/api/deep_copy_generated.go" )
61
+ files .Insert ("pkg/expapi/v1/deep_copy_generated.go" )
62
+ files .Insert ("pkg/expapi/deep_copy_generated.go" )
63
+ files .Insert ("pkg/api/v1/conversion_generated.go" )
64
+ files .Insert ("pkg/expapi/v1/conversion_generated.go" )
65
+ files .Insert ("api/swagger-spec/resourceListing.json" )
66
+ files .Insert ("api/swagger-spec/version.json" )
67
+ files .Insert ("api/swagger-spec/api.json" )
68
+ files .Insert ("api/swagger-spec/v1.json" )
69
+ docs , err := config .GetFileContents (".generated_docs" , "" )
59
70
if err != nil {
60
71
docs = ""
61
72
}
62
73
docSlice := strings .Split (docs , "\n " )
63
- genFiles = append ( genFiles , docSlice ... )
74
+ files . Insert ( docSlice ... )
64
75
65
- return genFiles
76
+ s .genFiles = & files
77
+ return * s .genFiles
66
78
}
67
79
68
- func (PRSizeMunger ) MungePullRequest (config * config.MungeConfig , pr * github.PullRequest , issue * github.Issue , commits []github.RepositoryCommit , events []github.IssueEvent ) {
80
+ func (s * PRSizeMunger ) MungePullRequest (config * config.MungeConfig , pr * github.PullRequest , issue * github.Issue , commits []github.RepositoryCommit , events []github.IssueEvent ) {
81
+ genFiles := s .getGeneratedFiles (config )
82
+
69
83
if pr .Additions == nil {
70
84
glog .Warningf ("PR %d has nil Additions" , * pr .Number )
71
85
return
72
86
}
87
+ adds := * pr .Additions
73
88
if pr .Deletions == nil {
74
89
glog .Warningf ("PR %d has nil Deletions" , * pr .Number )
75
90
return
76
91
}
77
-
78
- adds := * pr .Additions
79
92
dels := * pr .Deletions
80
93
81
- // It would be 'better' to call this for every commit but that takes
82
- // a whole lot of time for almost always the same information, and if
83
- // our results are slightly wrong, who cares? Instead look for the
84
- // generated files once per PR and if someone changed both what files
85
- // are generated and then undid that change in an intermediate commit
86
- // we might call this PR bigger than we "should."
87
- genFiles := getGeneratedFiles (config , commits [len (commits )- 1 ])
88
-
89
94
for _ , c := range commits {
90
95
for _ , f := range c .Files {
91
96
if strings .HasPrefix (* f .Filename , "Godeps/" ) {
92
97
adds = adds - * f .Additions
93
98
dels = dels - * f .Deletions
94
99
continue
95
100
}
96
- found := false
97
- for _ , genFile := range genFiles {
98
- if * f .Filename == genFile {
99
- adds = adds - * f .Additions
100
- dels = dels - * f .Deletions
101
- found = true
102
- break
103
- }
104
- }
105
- if found {
101
+ if genFiles .Has (* f .Filename ) {
102
+ adds = adds - * f .Additions
103
+ dels = dels - * f .Deletions
106
104
continue
107
105
}
108
106
}
0 commit comments