Class: Diggit::DevelopersActivity::Analyses::MonthsActivityAnalysis
- Inherits:
-
ActivityAnalysis
- Object
- Analysis
- ActivityAnalysis
- Diggit::DevelopersActivity::Analyses::MonthsActivityAnalysis
show all
- Defined in:
- lib/diggit/developers_activity/analyses/months_activity_analysis.rb
Instance Method Summary
collapse
#load_options
#extract_developers_activity
Constructor Details
Returns a new instance of MonthsActivityAnalysis.
17
18
19
20
21
22
|
# File 'lib/diggit/developers_activity/analyses/months_activity_analysis.rb', line 17
def initialize(*args)
super(*args)
@months_to_extract = @options.key?(OPT_MONTHS_TO_EXTRACT) ? @options[OPT_MONTHS_TO_EXTRACT].to_sym : :before
@num_months_to_extract = @options.key?(OPT_NUM_MONTHS_TO_EXTRACT) ? @options[OPT_NUM_MONTHS_TO_EXTRACT].to_i : 12
end
|
Instance Method Details
#clean ⇒ Object
30
31
32
33
|
# File 'lib/diggit/developers_activity/analyses/months_activity_analysis.rb', line 30
def clean
db.client[MONTHS_BEFORE_COL].find({ project: @source.url }).delete_many unless @months_to_extract == :after
db.client[MONTHS_AFTER_COL].find({ project: @source.url }).delete_many unless @months_to_extract == :before
end
|
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/diggit/developers_activity/analyses/months_activity_analysis.rb', line 68
def
print("Extracting monthly activity (after S_0) ")
STDOUT.flush
Renames.clear
r_0 = repo.lookup(src_opt[@source]["cloc-commit-id"])
r_last = repo.lookup(src_opt[@source]["R_last"])
t_0 = r_0.author[:time]
walker = Rugged::Walker.new(repo)
walker.push_range("#{r_0.oid}..#{r_last.oid}")
t_next_month = t_0 + MONTH_SECONDS
month_num = 1
commits = []
walker.sort_by { |c| c.author[:time] }.each do |commit|
t = commit.author[:time]
next if t < t_0
Renames.(commit, false)
commits << commit if commit.parents.size == 1
if t > t_next_month
print('.')
STDOUT.flush
m = ActivityExtractor.(@source, commits, month_num)
db.insert(MONTHS_AFTER_COL, m) unless m.empty?
month_num += 1
t_next_month += MONTH_SECONDS
commits = []
end
break if month_num > @num_months_to_extract
end
print("\n")
STDOUT.flush
end
|
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/diggit/developers_activity/analyses/months_activity_analysis.rb', line 35
def
print("Extracting monthly activity (before S_0)")
STDOUT.flush
Renames.clear
r_0 = repo.lookup(src_opt[@source]["cloc-commit-id"])
r_first = repo.lookup(src_opt[@source]["R_first"])
t_first = r_first.author[:time]
t_0 = r_0.author[:time]
walker = Rugged::Walker.new(repo)
walker.push_range("#{r_first.oid}..#{r_0.oid}")
t_previous_month = t_0 - MONTH_SECONDS
month_num = 1
commits = []
walker.sort_by { |c| c.author[:time] }.reverse_each do |commit|
t = commit.author[:time]
Renames.(commit, true)
commits << commit if commit.parents.size == 1
if t < t_previous_month || t < t_first
print('.')
STDOUT.flush
m = (@source, commits, month_num)
db.insert(MONTHS_BEFORE_COL, m) unless m.empty?
month_num += 1
t_previous_month -= MONTH_SECONDS
commits = []
end
break if t < t_first || month_num > @num_months_to_extract
end
print("\n")
STDOUT.flush
end
|
#run ⇒ Object
24
25
26
27
28
|
# File 'lib/diggit/developers_activity/analyses/months_activity_analysis.rb', line 24
def run
super
unless @months_to_extract == :after
unless @months_to_extract == :before
end
|