Skip to content

Commit bd565d1

Browse files
authored
Merge pull request #339 from vmarkovtsev/master
Change --imports-per-dev to return imports through time
2 parents 1fca413 + 8c012d1 commit bd565d1

File tree

9 files changed

+459
-234
lines changed

9 files changed

+459
-234
lines changed

internal/pb/pb.pb.go

Lines changed: 175 additions & 124 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/pb/pb.proto

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,12 @@ message TyposDataset {
182182
repeated Typo typos = 1;
183183
}
184184

185+
message ImportsPerTick {
186+
map<int32, int64> counts = 1;
187+
}
188+
185189
message ImportsPerLanguage {
186-
map<string, int64> counts = 1;
190+
map<string, ImportsPerTick> ticks = 1;
187191
}
188192

189193
message ImportsPerDeveloper {
@@ -193,6 +197,8 @@ message ImportsPerDeveloper {
193197
message ImportsPerDeveloperResults {
194198
repeated ImportsPerDeveloper imports = 1;
195199
repeated string author_index = 2;
200+
// how long each tick is, as an int64 nanosecond count (Go's time.Duration)
201+
int64 tick_size = 3;
196202
}
197203

198204
message AnalysisResults {

leaves/burndown.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ type BurndownAnalysis struct {
4747
// PeopleNumber is the number of developers for which to collect the burndown stats. 0 disables it.
4848
PeopleNumber int
4949

50+
// TickSize indicates the size of each time granule: day, hour, week, etc.
51+
TickSize time.Duration
52+
5053
// HibernationThreshold sets the hibernation threshold for the underlying
5154
// RBTree allocator. It is useful to trade CPU time for reduced peak memory consumption
5255
// if there are many branches.
@@ -103,8 +106,6 @@ type BurndownAnalysis struct {
103106
// previousTick is the tick from the previous sample period -
104107
// different from TicksSinceStart.previousTick.
105108
previousTick int
106-
// tickSize indicates the size of each tick.
107-
tickSize time.Duration
108109
// references IdentityDetector.ReversedPeopleDict
109110
reversedPeopleDict []string
110111

@@ -140,7 +141,7 @@ type BurndownResult struct {
140141
// Pipeline.Initialize(facts map[string]interface{}). Thus it can be obtained via
141142
// facts[FactIdentityDetectorReversedPeopleDict].
142143
reversedPeopleDict []string
143-
// tickSize references TicksSinceStart.tickSize
144+
// TickSize references TicksSinceStart.TickSize
144145
tickSize time.Duration
145146
// sampling and granularity are copied from BurndownAnalysis and stored for service purposes
146147
// such as merging several results together.
@@ -294,7 +295,7 @@ func (analyser *BurndownAnalysis) Configure(facts map[string]interface{}) error
294295
analyser.Debug = val
295296
}
296297
if val, exists := facts[items.FactTickSize].(time.Duration); exists {
297-
analyser.tickSize = val
298+
analyser.TickSize = val
298299
}
299300
return nil
300301
}
@@ -329,10 +330,10 @@ func (analyser *BurndownAnalysis) Initialize(repository *git.Repository) error {
329330
analyser.Granularity)
330331
analyser.Sampling = analyser.Granularity
331332
}
332-
if analyser.tickSize == 0 {
333+
if analyser.TickSize == 0 {
333334
def := items.DefaultTicksSinceStartTickSize * time.Hour
334335
analyser.l.Warnf("tick size was not set, adjusted to %v\n", def)
335-
analyser.tickSize = items.DefaultTicksSinceStartTickSize * time.Hour
336+
analyser.TickSize = items.DefaultTicksSinceStartTickSize * time.Hour
336337
}
337338
analyser.repository = repository
338339
analyser.globalHistory = sparseHistory{}
@@ -570,7 +571,7 @@ func (analyser *BurndownAnalysis) Finalize() interface{} {
570571
FileOwnership: fileOwnership,
571572
PeopleHistories: peopleHistories,
572573
PeopleMatrix: peopleMatrix,
573-
tickSize: analyser.tickSize,
574+
tickSize: analyser.TickSize,
574575
reversedPeopleDict: analyser.reversedPeopleDict,
575576
sampling: analyser.Sampling,
576577
granularity: analyser.Granularity,
@@ -653,12 +654,12 @@ func (analyser *BurndownAnalysis) MergeResults(
653654
bar1.tickSize, bar2.tickSize)
654655
}
655656
// for backwards-compatibility, if no tick size is present set to default
656-
analyser.tickSize = bar1.tickSize
657-
if analyser.tickSize == 0 {
658-
analyser.tickSize = items.DefaultTicksSinceStartTickSize * time.Hour
657+
analyser.TickSize = bar1.tickSize
658+
if analyser.TickSize == 0 {
659+
analyser.TickSize = items.DefaultTicksSinceStartTickSize * time.Hour
659660
}
660661
merged := BurndownResult{
661-
tickSize: analyser.tickSize,
662+
tickSize: analyser.TickSize,
662663
}
663664
if bar1.sampling < bar2.sampling {
664665
merged.sampling = bar1.sampling

leaves/burndown_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func TestBurndownConfigure(t *testing.T) {
8787
assert.True(t, bd.HibernationToDisk)
8888
assert.Equal(t, bd.HibernationDirectory, "xxx")
8989
assert.Equal(t, bd.Debug, true)
90-
assert.Equal(t, bd.tickSize, 24*time.Hour)
90+
assert.Equal(t, bd.TickSize, 24*time.Hour)
9191
assert.Equal(t, bd.reversedPeopleDict, bd.Requires())
9292
facts[ConfigBurndownTrackPeople] = false
9393
facts[identity.FactIdentityDetectorPeopleCount] = 50
@@ -480,7 +480,7 @@ func bakeBurndownForSerialization(t *testing.T, firstAuthor, secondAuthor int) (
480480
Sampling: 30,
481481
PeopleNumber: 2,
482482
TrackFiles: true,
483-
tickSize: 24 * time.Hour,
483+
TickSize: 24 * time.Hour,
484484
}
485485
assert.Nil(t, bd.Initialize(test.Repository))
486486
deps := map[string]interface{}{}
@@ -1153,7 +1153,7 @@ func TestBurndownMergeGlobalHistory(t *testing.T) {
11531153
res2.PeopleMatrix[1][2] = 700
11541154
res2.PeopleMatrix[1][3] = 800
11551155
bd := BurndownAnalysis{
1156-
tickSize: 24 * time.Hour,
1156+
TickSize: 24 * time.Hour,
11571157
}
11581158
merged := bd.MergeResults(res1, res2, &c1, &c2).(BurndownResult)
11591159
assert.Equal(t, merged.granularity, 19)
@@ -1212,7 +1212,7 @@ func TestBurndownMergeGlobalHistory_withDifferentTickSizes(t *testing.T) {
12121212
RunTime: 100000,
12131213
}
12141214
bd := BurndownAnalysis{
1215-
tickSize: 24 * time.Hour,
1215+
TickSize: 24 * time.Hour,
12161216
}
12171217
merged := bd.MergeResults(res1, res2, &c1, &c2)
12181218
assert.IsType(t, errors.New(""), merged)
@@ -1253,7 +1253,7 @@ func TestBurndownMergeNils(t *testing.T) {
12531253
RunTime: 100000,
12541254
}
12551255
bd := BurndownAnalysis{
1256-
tickSize: 24 * time.Hour,
1256+
TickSize: 24 * time.Hour,
12571257
}
12581258
merged := bd.MergeResults(res1, res2, &c1, &c2).(BurndownResult)
12591259
assert.Equal(t, merged.granularity, 19)
@@ -1499,14 +1499,14 @@ func TestBurndownMergeMatrices(t *testing.T) {
14991499
CommitsNumber: 6982,
15001500
RunTime: 1567214,
15011501
}
1502-
bd := BurndownAnalysis{tickSize: 24 * time.Hour}
1503-
nh := bd.mergeMatrices(h, nil, 30, 30, 30, 30, bd.tickSize, cr, cr)
1502+
bd := BurndownAnalysis{TickSize: 24 * time.Hour}
1503+
nh := bd.mergeMatrices(h, nil, 30, 30, 30, 30, bd.TickSize, cr, cr)
15041504
for y, row := range nh {
15051505
for x, v := range row {
15061506
assert.InDelta(t, v, h[y][x], 1, fmt.Sprintf("y=%d x=%d", y, x))
15071507
}
15081508
}
1509-
nh = bd.mergeMatrices(h, h, 30, 30, 30, 30, bd.tickSize, cr, cr)
1509+
nh = bd.mergeMatrices(h, h, 30, 30, 30, 30, bd.TickSize, cr, cr)
15101510
for y, row := range nh {
15111511
for x, v := range row {
15121512
assert.InDelta(t, v, h[y][x]*2, 1, fmt.Sprintf("y=%d x=%d", y, x))
@@ -1559,7 +1559,7 @@ func TestBurndownMergePeopleHistories(t *testing.T) {
15591559
RunTime: 100000,
15601560
}
15611561
bd := BurndownAnalysis{
1562-
tickSize: 24 * time.Hour,
1562+
TickSize: 24 * time.Hour,
15631563
}
15641564
merged := bd.MergeResults(res1, res2, &c1, &c2).(BurndownResult)
15651565
mh := [][]int64{

leaves/devs.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type DevsAnalysis struct {
3333
ticks map[int]map[int]*DevTick
3434
// reversedPeopleDict references IdentityDetector.ReversedPeopleDict
3535
reversedPeopleDict []string
36-
// tickSize references TicksSinceStart.tickSize
36+
// TickSize references TicksSinceStart.TickSize
3737
tickSize time.Duration
3838

3939
l core.Logger
@@ -47,7 +47,7 @@ type DevsResult struct {
4747

4848
// reversedPeopleDict references IdentityDetector.ReversedPeopleDict
4949
reversedPeopleDict []string
50-
// tickSize references TicksSinceStart.tickSize
50+
// TickSize references TicksSinceStart.TickSize
5151
tickSize time.Duration
5252
}
5353

0 commit comments

Comments
 (0)