Commit 2cd1cee6 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'commit-graphs-by-email' into 'master'

Group project contributions by both name and email.

See https://twitter.com/Argorain/status/598751646143897600.

We now group by both name and email, so that "Douwe Maan - douwe@gitlab.com", "Douwe Maan - me@douwe.me" and "Douwe M. - me@douwe.me" are all combined into one graph.

Fixes internal issue https://dev.gitlab.org/gitlab/gitlabhq/issues/2328.

See merge request !700
parents 464123b3 a9e26861
......@@ -20,6 +20,7 @@ v 7.12.0 (unreleased)
- Consistently refer to MRs as either Accepted or Rejected.
- Add Accepted and Rejected tabs to MR lists.
- Prefix EmailsOnPush email subject with `[Git]`.
- Group project contributions by both name and email.
v 7.11.2
- no changes
......
......@@ -2,11 +2,15 @@ window.ContributorsStatGraphUtil =
parse_log: (log) ->
total = {}
by_author = {}
by_email = {}
for entry in log
@add_date(entry.date, total) unless total[entry.date]?
@add_author(entry, by_author) unless by_author[entry.author_name]?
@add_date(entry.date, by_author[entry.author_name]) unless by_author[entry.author_name][entry.date]
@store_data(entry, total[entry.date], by_author[entry.author_name][entry.date])
data = by_author[entry.author_name] #|| by_email[entry.author_email]
data ?= @add_author(entry, by_author, by_email)
@add_date(entry.date, data) unless data[entry.date]
@store_data(entry, total[entry.date], data[entry.date])
total = _.toArray(total)
by_author = _.toArray(by_author)
total: total, by_author: by_author
......@@ -15,10 +19,12 @@ window.ContributorsStatGraphUtil =
collection[date] = {}
collection[date].date = date
add_author: (author, by_author) ->
by_author[author.author_name] = {}
by_author[author.author_name].author_name = author.author_name
by_author[author.author_name].author_email = author.author_email
add_author: (author, by_author, by_email) ->
data = {}
data.author_name = author.author_name
data.author_email = author.author_email
by_author[author.author_name] = data
by_email[author.author_email] = data
store_data: (entry, total, by_author) ->
@store_commits(total, by_author)
......
......@@ -118,9 +118,11 @@ describe("ContributorsStatGraphUtil", function () {
describe("#add_author", function () {
it("adds an author field to the collection", function () {
var fake_author = { author_name: "Author", author_email: 'fake@email.com' }
var fake_collection = {}
ContributorsStatGraphUtil.add_author(fake_author, fake_collection)
expect(fake_collection[fake_author.author_name].author_name).toEqual("Author")
var fake_author_collection = {}
var fake_email_collection = {}
ContributorsStatGraphUtil.add_author(fake_author, fake_author_collection, fake_email_collection)
expect(fake_author_collection[fake_author.author_name].author_name).toEqual("Author")
expect(fake_email_collection[fake_author.author_email].author_name).toEqual("Author")
})
})
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment