diggit-developers_activity 0.1.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/diggit-developers_activity.gemspec +1 -1
- data/lib/diggit/developers_activity/activity_extractor.rb +4 -3
- data/lib/diggit/developers_activity/activity_extractor/modules.rb +11 -6
- data/lib/diggit/developers_activity/analyses/activity_analysis.rb +12 -10
- data/lib/diggit/developers_activity/analyses/commits_files_analysis.rb +47 -0
- data/lib/diggit/developers_activity/analyses/module_metrics_analysis.rb +4 -3
- data/lib/diggit/developers_activity/analyses/months_activity_analysis.rb +11 -10
- data/lib/diggit/developers_activity/analyses/project_developers_analysis.rb +7 -6
- data/lib/diggit/developers_activity/analyses/releases_activity_analysis.rb +7 -6
- data/lib/diggit/developers_activity/dataset/options +8 -0
- data/lib/diggit/developers_activity/dataset/sources.list +2 -2
- data/lib/diggit/developers_activity/dataset/{.dgitsources-options → sources_options} +0 -0
- data/lib/diggit/developers_activity/{analyses → joins}/developer_turnover_join.rb +13 -8
- data/lib/diggit/developers_activity/module_metrics_extractor.rb +6 -5
- data/lib/diggit/developers_activity/version.rb +1 -1
- data/lib/diggit/developers_activity/workspace_init.rb +32 -11
- metadata +9 -8
- data/lib/diggit/developers_activity/dataset/.dgitrc +0 -25
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 552e9664a0e67b37ffc9fd48718ec708743bdb72
|
|
4
|
+
data.tar.gz: e96e958f992482b089c6febed723b7d50e22c548
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: de2e21304b1ce2337a0b0c93cf84207ada78e672540cddf7fcc372729d47473a31d59bea2e938a0602ee2c1e59ebf09edd9198254ff4b726f52e9363d431be4b
|
|
7
|
+
data.tar.gz: 841f2a1f7d7383cc1f4b7d52da1d6631ccecde606a69aec9044d4a7d8ef5f4003b8337a9465b329295d3a86af6b14fa79b301002e7b4b1997b05d177595e5049
|
|
@@ -4,6 +4,7 @@ require 'diggit/developers_activity/activity_extractor/renames'
|
|
|
4
4
|
require 'diggit/developers_activity/activity_extractor/modules'
|
|
5
5
|
require 'diggit/developers_activity/activity_extractor/authors'
|
|
6
6
|
require 'diggit/developers_activity'
|
|
7
|
+
require 'set'
|
|
7
8
|
|
|
8
9
|
module Diggit
|
|
9
10
|
module DevelopersActivity
|
|
@@ -35,13 +36,13 @@ module Diggit
|
|
|
35
36
|
end
|
|
36
37
|
end
|
|
37
38
|
|
|
38
|
-
|
|
39
|
+
first_commit_date = commits[0].author[:time]
|
|
39
40
|
|
|
40
41
|
# compute metrics and write to result
|
|
41
42
|
developer_metrics = []
|
|
42
43
|
contributions.each do |key, value|
|
|
43
|
-
developer_metrics << { project: source, developer: key[:author], 'module' => key['module'],
|
|
44
|
-
touches: value[:touches], churn: value[:churn], releaseDate:
|
|
44
|
+
developer_metrics << { project: source.url, developer: key[:author], 'module' => key['module'],
|
|
45
|
+
touches: value[:touches], churn: value[:churn], releaseDate: first_commit_date,
|
|
45
46
|
commits_group_id: commits_group_id }
|
|
46
47
|
end
|
|
47
48
|
developer_metrics
|
|
@@ -12,15 +12,19 @@ module Diggit
|
|
|
12
12
|
MODULES_REGEXP = "modules"
|
|
13
13
|
FILE_FILTER = "file-filter"
|
|
14
14
|
|
|
15
|
-
def read_options(source,
|
|
15
|
+
def read_options(source, src_opt, db)
|
|
16
16
|
@source = source
|
|
17
17
|
@db = db
|
|
18
18
|
@release_files = files_from_cloc_analysis
|
|
19
|
-
@modules_regexp =
|
|
20
|
-
@file_filter = Regexp.new
|
|
19
|
+
@modules_regexp = src_opt.key?(MODULES_REGEXP) ? src_opt[MODULES_REGEXP].map { |m| Regexp.new m } : []
|
|
20
|
+
@file_filter = Regexp.new src_opt[FILE_FILTER]
|
|
21
21
|
@file_filter ||= //
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
+
def files_as_modules
|
|
25
|
+
@modules_regexp = []
|
|
26
|
+
end
|
|
27
|
+
|
|
24
28
|
def ignore_file?(path)
|
|
25
29
|
!@release_files.include?(path) || (@file_filter =~ path).nil?
|
|
26
30
|
end
|
|
@@ -43,9 +47,10 @@ module Diggit
|
|
|
43
47
|
|
|
44
48
|
def files_from_cloc_analysis
|
|
45
49
|
release_files = Set.new
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
@db['cloc-file'].find({ source: @source.url }).each do |cloc_source|
|
|
51
|
+
cloc_source["cloc"].each do |cloc_file|
|
|
52
|
+
release_files << cloc_file["path"]
|
|
53
|
+
end
|
|
49
54
|
end
|
|
50
55
|
release_files
|
|
51
56
|
end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
require 'diggit/developers_activity/activity_extractor'
|
|
4
|
+
require 'oj'
|
|
4
5
|
|
|
5
6
|
module Diggit
|
|
6
7
|
module DevelopersActivity
|
|
@@ -9,25 +10,26 @@ module Diggit
|
|
|
9
10
|
#
|
|
10
11
|
# @abstract
|
|
11
12
|
# @since 0.0.1
|
|
12
|
-
class ActivityAnalysis < Analysis
|
|
13
|
+
class ActivityAnalysis < Diggit::Analysis
|
|
13
14
|
include ActivityExtractor
|
|
15
|
+
require_addons 'db', 'src_opt'
|
|
14
16
|
|
|
15
|
-
def
|
|
16
|
-
super(*args)
|
|
17
|
+
def run
|
|
17
18
|
load_options
|
|
18
19
|
end
|
|
19
20
|
|
|
20
|
-
def source_options
|
|
21
|
-
@addons[:sources_options][@source]
|
|
22
|
-
end
|
|
23
|
-
|
|
24
21
|
def load_options
|
|
25
|
-
@releases =
|
|
22
|
+
@releases = src_opt[@source]["releases"]
|
|
26
23
|
@all_releases = false
|
|
27
24
|
@all_releases = @options["all_releases"] if @options.key? "all_releases"
|
|
28
25
|
|
|
29
|
-
Authors.read_options(
|
|
30
|
-
|
|
26
|
+
Authors.read_options(src_opt[@source])
|
|
27
|
+
|
|
28
|
+
source_options = src_opt[@source]
|
|
29
|
+
if @options.key? 'alternative_modules'
|
|
30
|
+
source_options['modules'] = Oj.load_file(@options['alternative_modules'])[@source.url]['modules']
|
|
31
|
+
end
|
|
32
|
+
Modules.read_options(@source, source_options, db.client)
|
|
31
33
|
|
|
32
34
|
@modules_metrics = @options.key?("modules_metrics") ? @options["modules_metrics"] : true
|
|
33
35
|
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'diggit/developers_activity/analyses/activity_analysis'
|
|
4
|
+
|
|
5
|
+
module Diggit
|
|
6
|
+
module DevelopersActivity
|
|
7
|
+
module Analyses
|
|
8
|
+
class CommitsFilesAnalysis < ActivityAnalysis
|
|
9
|
+
COL ||= "commits-files"
|
|
10
|
+
MONTH_SECONDS ||= 3600 * 24 * 30
|
|
11
|
+
def run
|
|
12
|
+
super
|
|
13
|
+
r_0 = repo.lookup(src_opt[@source]["cloc-commit-id"])
|
|
14
|
+
t_0 = r_0.author[:time]
|
|
15
|
+
|
|
16
|
+
walker = Rugged::Walker.new(repo)
|
|
17
|
+
walker.sorting(Rugged::SORT_DATE)
|
|
18
|
+
walker.push(r_0)
|
|
19
|
+
|
|
20
|
+
t_stop = t_0 - 12 * MONTH_SECONDS
|
|
21
|
+
commits_files = []
|
|
22
|
+
Modules.files_as_modules
|
|
23
|
+
walker.each do |commit|
|
|
24
|
+
next unless commit.parents.size == 1
|
|
25
|
+
Renames.extract_commit_renames(commit, true)
|
|
26
|
+
commit.parents.each do |parent|
|
|
27
|
+
diff = parent.diff(commit, DIFF_OPTIONS)
|
|
28
|
+
diff.find_similar!(DIFF_RENAME_OPTIONS)
|
|
29
|
+
diff.each do |patch|
|
|
30
|
+
maudule = Modules.get_patch_module(patch)
|
|
31
|
+
next if maudule.nil?
|
|
32
|
+
|
|
33
|
+
commits_files << { file: maudule, commit: commit.oid.to_s, project: @source.url }
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
#break if commit.author[:time] < t_stop
|
|
37
|
+
end
|
|
38
|
+
db.insert(COL, commits_files)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def clean
|
|
42
|
+
db.client[COL].find({ project: @source.url }).delete_many
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -13,13 +13,14 @@ module Diggit
|
|
|
13
13
|
MODULES_METRICS_COL ||= "modules_metrics"
|
|
14
14
|
|
|
15
15
|
def run
|
|
16
|
+
super
|
|
16
17
|
puts('Extracting LoC and #BugFixes')
|
|
17
|
-
metrics = ModuleMetricsExtractor.extract_module_metrics(@source,
|
|
18
|
-
|
|
18
|
+
metrics = ModuleMetricsExtractor.extract_module_metrics(@source, src_opt[@source], db, repo)
|
|
19
|
+
db.insert(MODULES_METRICS_COL, metrics)
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
def clean
|
|
22
|
-
|
|
23
|
+
db.client[MODULES_METRICS_COL].find({ project: @source.url }).delete_many
|
|
23
24
|
end
|
|
24
25
|
end
|
|
25
26
|
end
|
|
@@ -22,25 +22,26 @@ module Diggit
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
def run
|
|
25
|
+
super
|
|
25
26
|
extract_months_before unless @months_to_extract == :after
|
|
26
27
|
extract_months_after unless @months_to_extract == :before
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
def clean
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
db.client[MONTHS_BEFORE_COL].find({ project: @source.url }).delete_many unless @months_to_extract == :after
|
|
32
|
+
db.client[MONTHS_AFTER_COL].find({ project: @source.url }).delete_many unless @months_to_extract == :before
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
def extract_months_before
|
|
35
36
|
print("Extracting monthly activity (before S_0)")
|
|
36
37
|
STDOUT.flush
|
|
37
38
|
Renames.clear
|
|
38
|
-
r_0 =
|
|
39
|
-
t_first =
|
|
39
|
+
r_0 = repo.lookup(src_opt[@source]["cloc-commit-id"])
|
|
40
|
+
t_first = repo.lookup(src_opt[@source]["R_first"]).author[:time]
|
|
40
41
|
|
|
41
42
|
t_0 = r_0.author[:time]
|
|
42
43
|
|
|
43
|
-
walker = Rugged::Walker.new(
|
|
44
|
+
walker = Rugged::Walker.new(repo)
|
|
44
45
|
walker.sorting(Rugged::SORT_DATE)
|
|
45
46
|
walker.push(r_0)
|
|
46
47
|
|
|
@@ -55,7 +56,7 @@ module Diggit
|
|
|
55
56
|
print('.')
|
|
56
57
|
STDOUT.flush
|
|
57
58
|
m = extract_developers_activity(@source, commits, month_num)
|
|
58
|
-
|
|
59
|
+
db.insert(MONTHS_BEFORE_COL, m) unless m.empty?
|
|
59
60
|
month_num += 1
|
|
60
61
|
t_previous_month -= MONTH_SECONDS
|
|
61
62
|
commits = []
|
|
@@ -70,11 +71,11 @@ module Diggit
|
|
|
70
71
|
print("Extracting monthly activity (after S_0) ")
|
|
71
72
|
STDOUT.flush
|
|
72
73
|
Renames.clear
|
|
73
|
-
r_0 =
|
|
74
|
-
r_last =
|
|
74
|
+
r_0 = repo.lookup(src_opt[@source]["cloc-commit-id"])
|
|
75
|
+
r_last = repo.lookup(src_opt[@source]["R_last"])
|
|
75
76
|
t_0 = r_0.author[:time]
|
|
76
77
|
|
|
77
|
-
walker = Rugged::Walker.new(
|
|
78
|
+
walker = Rugged::Walker.new(repo)
|
|
78
79
|
walker.sorting(Rugged::SORT_DATE | Rugged::SORT_REVERSE)
|
|
79
80
|
walker.push(r_last)
|
|
80
81
|
t_next_month = t_0 + MONTH_SECONDS
|
|
@@ -89,7 +90,7 @@ module Diggit
|
|
|
89
90
|
print('.')
|
|
90
91
|
STDOUT.flush
|
|
91
92
|
m = ActivityExtractor.extract_developers_activity(@source, commits, month_num)
|
|
92
|
-
|
|
93
|
+
db.insert(MONTHS_AFTER_COL, m) unless m.empty?
|
|
93
94
|
month_num += 1
|
|
94
95
|
t_next_month += MONTH_SECONDS
|
|
95
96
|
commits = []
|
|
@@ -11,11 +11,12 @@ module Diggit
|
|
|
11
11
|
class ProjectDevelopersAnalysis < ActivityAnalysis
|
|
12
12
|
COL ||= "devs_commit_dates"
|
|
13
13
|
def run
|
|
14
|
+
super
|
|
14
15
|
puts('Extracting project-level activity')
|
|
15
|
-
r_last =
|
|
16
|
-
r_first_time =
|
|
16
|
+
r_last = repo.lookup(src_opt[@source]["R_last"])
|
|
17
|
+
r_first_time = repo.lookup(src_opt[@source]["R_first"]).author[:time]
|
|
17
18
|
|
|
18
|
-
walker = Rugged::Walker.new(
|
|
19
|
+
walker = Rugged::Walker.new(repo)
|
|
19
20
|
walker.sorting(Rugged::SORT_DATE)
|
|
20
21
|
walker.push(r_last)
|
|
21
22
|
|
|
@@ -23,16 +24,16 @@ module Diggit
|
|
|
23
24
|
walker.each do |commit|
|
|
24
25
|
t = commit.author[:time]
|
|
25
26
|
author = Authors.get_author(commit)
|
|
26
|
-
devs << { project: @source, author: author, time: t }
|
|
27
|
+
devs << { project: @source.url, author: author, time: t }
|
|
27
28
|
|
|
28
29
|
break if t < r_first_time
|
|
29
30
|
end
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
db.insert(COL, devs)
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
def clean
|
|
35
|
-
|
|
36
|
+
db.client[COL].find({ project: @source.url }).delete_many
|
|
36
37
|
end
|
|
37
38
|
end
|
|
38
39
|
end
|
|
@@ -11,11 +11,11 @@ module Diggit
|
|
|
11
11
|
COL_DEVELOPERS_RELEASE_ACTIVITY ||= "developer_activity_release"
|
|
12
12
|
|
|
13
13
|
def commits_between(new_commit, old_commit)
|
|
14
|
-
walker = Rugged::Walker.new(
|
|
14
|
+
walker = Rugged::Walker.new(repo)
|
|
15
15
|
walker.sorting(Rugged::SORT_DATE)
|
|
16
|
-
walker.push(
|
|
16
|
+
walker.push(repo.lookup(new_commit))
|
|
17
17
|
|
|
18
|
-
t_old =
|
|
18
|
+
t_old = repo.lookup(old_commit).author[:time]
|
|
19
19
|
commits = []
|
|
20
20
|
|
|
21
21
|
walker.each do |commit|
|
|
@@ -27,18 +27,19 @@ module Diggit
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def run
|
|
30
|
+
super
|
|
30
31
|
puts('Extract releases activity')
|
|
31
|
-
releases =
|
|
32
|
+
releases = src_opt[@source]["releases"]
|
|
32
33
|
(0..(releases.length - 2)).each do |i|
|
|
33
34
|
release_commits = commits_between(releases[i], releases[i + 1])
|
|
34
35
|
release_commits.each { |commit| Renames.extract_commit_renames(commit) }
|
|
35
36
|
m = extract_developers_activity(@source, release_commits, i)
|
|
36
|
-
|
|
37
|
+
db.insert(COL_DEVELOPERS_RELEASE_ACTIVITY, m) unless m.empty?
|
|
37
38
|
end
|
|
38
39
|
end
|
|
39
40
|
|
|
40
41
|
def clean
|
|
41
|
-
|
|
42
|
+
db.client[COL_DEVELOPERS_RELEASE_ACTIVITY].find({ project: @source.url }).delete_many
|
|
42
43
|
end
|
|
43
44
|
end
|
|
44
45
|
end
|
|
@@ -3,5 +3,5 @@ https://github.com/matthieu-foucault/jquery.git
|
|
|
3
3
|
https://github.com/rails/rails.git
|
|
4
4
|
https://github.com/jenkinsci/jenkins.git
|
|
5
5
|
https://github.com/ansible/ansible.git
|
|
6
|
-
https://github.com/mono/mono.git
|
|
7
|
-
https://github.com/sebastianbergmann/phpunit.git
|
|
6
|
+
# https://github.com/mono/mono.git
|
|
7
|
+
# https://github.com/sebastianbergmann/phpunit.git
|
|
File without changes
|
|
@@ -5,18 +5,23 @@ require 'fileutils'
|
|
|
5
5
|
module Diggit
|
|
6
6
|
module DevelopersActivity
|
|
7
7
|
module Analyses
|
|
8
|
-
class DeveloperTurnoverJoin < Join
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
class DeveloperTurnoverJoin < Diggit::Join
|
|
9
|
+
require_addons 'r'
|
|
10
|
+
require_analyses('module_metrics_analysis', 'months_activity_analysis',
|
|
11
|
+
'project_developers_analysis', 'releases_activity_analysis')
|
|
12
|
+
WORKING_DIR = './turnover/results/'
|
|
13
|
+
WEB_WORKING_DIR = './turnover/web_page_results/'
|
|
11
14
|
def run
|
|
12
|
-
@
|
|
13
|
-
|
|
15
|
+
db_match = @options[:mongo][:url].match(%r{^mongodb://(.+):27017/(.+)$})
|
|
16
|
+
r.database_host = db_match[1]
|
|
17
|
+
r.database_name = db_match[2]
|
|
18
|
+
r.working_dir = WORKING_DIR
|
|
14
19
|
FileUtils.mkdir_p(WORKING_DIR)
|
|
15
|
-
|
|
20
|
+
r.web_working_dir = WEB_WORKING_DIR
|
|
16
21
|
FileUtils.mkdir_p(WEB_WORKING_DIR)
|
|
17
22
|
puts('Running R sript...')
|
|
18
23
|
|
|
19
|
-
|
|
24
|
+
r.eval <<-EOS
|
|
20
25
|
options(warn=-1)
|
|
21
26
|
if (require(developerTurnover) == FALSE) {
|
|
22
27
|
if (require(devtools) == FALSE) {
|
|
@@ -28,7 +33,7 @@ module Diggit
|
|
|
28
33
|
library(developerTurnover)
|
|
29
34
|
}
|
|
30
35
|
|
|
31
|
-
developer_turnover(database_host, working_dir, web_working_dir)
|
|
36
|
+
developer_turnover(database_host, database_name, working_dir, web_working_dir)
|
|
32
37
|
print("R script finished")
|
|
33
38
|
options(warn=0)
|
|
34
39
|
EOS
|
|
@@ -17,7 +17,7 @@ module Diggit
|
|
|
17
17
|
|
|
18
18
|
modules_metrics = []
|
|
19
19
|
modules_loc.each do |maudule, loc|
|
|
20
|
-
modules_metrics << { project: source, 'module' => maudule, 'LoC' => loc,
|
|
20
|
+
modules_metrics << { project: source.url, 'module' => maudule, 'LoC' => loc,
|
|
21
21
|
'BugFixes' => modules_bugfixes[maudule].size }
|
|
22
22
|
end
|
|
23
23
|
modules_metrics
|
|
@@ -40,10 +40,11 @@ module Diggit
|
|
|
40
40
|
|
|
41
41
|
def extract_loc(source, db)
|
|
42
42
|
modules_loc = Hash.new(0)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
db.client['cloc-file'].find({ source: source.url }).each do |cloc_source|
|
|
44
|
+
cloc_source['cloc'].each do |cloc_file|
|
|
45
|
+
maudule = ActivityExtractor::Modules.get_module(cloc_file['path'])
|
|
46
|
+
modules_loc[maudule] = modules_loc[maudule] + cloc_file['code'] unless maudule.nil?
|
|
47
|
+
end
|
|
47
48
|
end
|
|
48
49
|
modules_loc
|
|
49
50
|
end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
require 'fileutils'
|
|
4
|
+
require 'dgit'
|
|
4
5
|
|
|
5
6
|
module Diggit
|
|
6
7
|
module DevelopersActivity
|
|
@@ -10,25 +11,45 @@ module Diggit
|
|
|
10
11
|
module WorkspaceInit
|
|
11
12
|
extend self
|
|
12
13
|
|
|
13
|
-
DIGGIT_RC = '.dgitrc'
|
|
14
|
-
DIGGIT_SOURCES_OPTIONS = '.dgitsources-options'
|
|
15
14
|
SOURCES_LIST = 'sources.list'
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
SOURCES_OPTIONS_FILE = 'sources_options'
|
|
16
|
+
OPTIONS_FILE = 'options'
|
|
17
|
+
DGIT_FOLDER = '.dgit'
|
|
19
18
|
|
|
20
19
|
def init
|
|
21
|
-
|
|
20
|
+
link_analyses_folder
|
|
21
|
+
link_joins_folder
|
|
22
|
+
Dig.init_dir('.')
|
|
23
|
+
Dig.init('.')
|
|
24
|
+
Dig.it.config.add_analysis('cloc_per_file')
|
|
25
|
+
Dig.it.config.add_analysis('module_metrics_analysis')
|
|
26
|
+
Dig.it.config.add_analysis('months_activity_analysis')
|
|
27
|
+
Dig.it.config.add_analysis('project_developers_analysis')
|
|
28
|
+
Dig.it.config.add_analysis('releases_activity_analysis')
|
|
29
|
+
|
|
30
|
+
Dig.it.config.add_join('developer_turnover_join')
|
|
31
|
+
|
|
22
32
|
dataset_dir = File.expand_path('dataset', File.dirname(__FILE__))
|
|
23
33
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
34
|
+
IO.readlines(File.join(dataset_dir, SOURCES_LIST)).select { |l| !l.strip.empty? && !l.start_with?('#') }
|
|
35
|
+
.each { |url| Dig.it.journal.add_source(url.strip) }
|
|
36
|
+
|
|
37
|
+
FileUtils.cp(File.join(dataset_dir, OPTIONS_FILE), DGIT_FOLDER)
|
|
38
|
+
FileUtils.cp(File.join(dataset_dir, SOURCES_OPTIONS_FILE), DGIT_FOLDER)
|
|
39
|
+
end
|
|
27
40
|
|
|
41
|
+
def link_analyses_folder
|
|
28
42
|
analyses_dir = File.expand_path('analyses', File.dirname(__FILE__))
|
|
29
|
-
home = File.
|
|
43
|
+
home = File.join(Dir.home, DGIT_FOLDER, 'plugins', 'analysis')
|
|
44
|
+
FileUtils.mkdir_p(home)
|
|
45
|
+
FileUtils.ln_sf(analyses_dir, File.join(home, 'developers_activity'))
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def link_joins_folder
|
|
49
|
+
analyses_dir = File.expand_path('joins', File.dirname(__FILE__))
|
|
50
|
+
home = File.join(Dir.home, DGIT_FOLDER, 'plugins', 'join')
|
|
30
51
|
FileUtils.mkdir_p(home)
|
|
31
|
-
FileUtils.
|
|
52
|
+
FileUtils.ln_sf(analyses_dir, File.join(home, 'developers_activity'))
|
|
32
53
|
end
|
|
33
54
|
end
|
|
34
55
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: diggit-developers_activity
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matthieu Foucault
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-07-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -44,14 +44,14 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
47
|
+
version: '2.0'
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
54
|
+
version: '2.0'
|
|
55
55
|
description: |-
|
|
56
56
|
This gem contains a set of analyses extracting developers activity from git repositories,
|
|
57
57
|
using different granularities of time periods. It also includes a dataset of git repositories for which we extacted
|
|
@@ -77,14 +77,15 @@ files:
|
|
|
77
77
|
- lib/diggit/developers_activity/activity_extractor/renames.rb
|
|
78
78
|
- lib/diggit/developers_activity/analyses.rb
|
|
79
79
|
- lib/diggit/developers_activity/analyses/activity_analysis.rb
|
|
80
|
-
- lib/diggit/developers_activity/analyses/
|
|
80
|
+
- lib/diggit/developers_activity/analyses/commits_files_analysis.rb
|
|
81
81
|
- lib/diggit/developers_activity/analyses/module_metrics_analysis.rb
|
|
82
82
|
- lib/diggit/developers_activity/analyses/months_activity_analysis.rb
|
|
83
83
|
- lib/diggit/developers_activity/analyses/project_developers_analysis.rb
|
|
84
84
|
- lib/diggit/developers_activity/analyses/releases_activity_analysis.rb
|
|
85
|
-
- lib/diggit/developers_activity/dataset
|
|
86
|
-
- lib/diggit/developers_activity/dataset/.dgitsources-options
|
|
85
|
+
- lib/diggit/developers_activity/dataset/options
|
|
87
86
|
- lib/diggit/developers_activity/dataset/sources.list
|
|
87
|
+
- lib/diggit/developers_activity/dataset/sources_options
|
|
88
|
+
- lib/diggit/developers_activity/joins/developer_turnover_join.rb
|
|
88
89
|
- lib/diggit/developers_activity/module_metrics_extractor.rb
|
|
89
90
|
- lib/diggit/developers_activity/version.rb
|
|
90
91
|
- lib/diggit/developers_activity/workspace_init.rb
|
|
@@ -108,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
108
109
|
version: '0'
|
|
109
110
|
requirements: []
|
|
110
111
|
rubyforge_project:
|
|
111
|
-
rubygems_version: 2.4.
|
|
112
|
+
rubygems_version: 2.4.8
|
|
112
113
|
signing_key:
|
|
113
114
|
specification_version: 4
|
|
114
115
|
summary: Analyses and dataset for the diggit tool.
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
":addons": [
|
|
3
|
-
"Db",
|
|
4
|
-
"SourcesOptions",
|
|
5
|
-
"RWrapper"
|
|
6
|
-
],
|
|
7
|
-
":analyses": [
|
|
8
|
-
"ClocPerFileAnalysis",
|
|
9
|
-
"Diggit::DevelopersActivity::Analyses::ProjectDevelopersAnalysis",
|
|
10
|
-
"Diggit::DevelopersActivity::Analyses::ModuleMetricsAnalysis",
|
|
11
|
-
"Diggit::DevelopersActivity::Analyses::MonthsActivityAnalysis",
|
|
12
|
-
"Diggit::DevelopersActivity::Analyses::ReleasesActivityAnalysis"
|
|
13
|
-
],
|
|
14
|
-
":joins": [
|
|
15
|
-
"Diggit::DevelopersActivity::Analyses::DeveloperTurnoverJoin"
|
|
16
|
-
],
|
|
17
|
-
":options": {
|
|
18
|
-
"modules_metrics": true,
|
|
19
|
-
"months-to-extract": ":both",
|
|
20
|
-
"num-months-to-extract": "12",
|
|
21
|
-
":mongo": {
|
|
22
|
-
":database": "developers_activity"
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|