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."
This commit is contained in:
parent
21c99e6a77
commit
b26ab0ceeb
3 changed files with 44 additions and 1 deletions
|
@ -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",
|
||||
|
|
Loading…
Reference in a new issue