Commit b26ab0ce authored by Stan Hu's avatar Stan Hu

This MR extends the commit calendar so it searches for commits made with every...

This MR extends the commit calendar so it searches for commits made with every email address the user has associated with his account.

This fixes one of the problems mentioned in gitlab-org/gitlab-ce#1162 and makes the behavior of the commit calendar as described in the profile.
"All email addresses will be used to identify your commits."
parent 21c99e6a
......@@ -146,7 +146,8 @@ class Repository
end
def timestamps_by_user_log(user)
args = %W(git log --author=#{user.email} --since=#{(Date.today - 1.year).to_s} --branches --pretty=format:%cd --date=short)
author_emails = '(' + user.all_emails.map{ |e| Regexp.escape(e) }.join('|') + ')'
args = %W(git log -E --author=#{author_emails} --since=#{(Date.today - 1.year).to_s} --branches --pretty=format:%cd --date=short)
dates = Gitlab::Popen.popen(args, path_to_repo).first.split("\n")
if dates.present?
......
......@@ -18,4 +18,27 @@ describe Repository do
it { is_expected.to eq('c1acaa58bbcbc3eafe538cb8274ba387047b69f8') }
end
context :timestamps_by_user_log do
before do
Date.stub(:today).and_return(Date.new(2015, 03, 01))
end
describe 'single e-mail for user' do
let(:user) { create(:user, email: sample_commit.author_email) }
subject { repository.timestamps_by_user_log(user) }
it { is_expected.to eq(["2014-08-06", "2014-07-31", "2014-07-31"]) }
end
describe 'multiple emails for user' do
let(:email_alias) { create(:email, email: another_sample_commit.author_email) }
let(:user) { create(:user, email: sample_commit.author_email, emails: [email_alias]) }
subject { repository.timestamps_by_user_log(user) }
it { is_expected.to eq(["2015-01-10", "2014-08-06", "2014-07-31", "2014-07-31"]) }
end
end
end
......@@ -43,6 +43,25 @@ eos
)
end
def another_sample_commit
OpenStruct.new(
id: "e56497bb5f03a90a51293fc6d516788730953899",
parent_id: '4cd80ccab63c82b4bad16faa5193fbd2aa06df40',
author_full_name: "Sytse Sijbrandij",
author_email: "sytse@gitlab.com",
files_changed_count: 1,
message: <<eos
Add directory structure for tree_helper spec
This directory structure is needed for a testing the method flatten_tree(tree) in the TreeHelper module
See [merge request #275](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/275#note_732774)
See merge request !2
eos
)
end
def sample_big_commit
OpenStruct.new(
id: "913c66a37b4a45b9769037c55c2d238bd0942d2e",
......
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