From 2545f6adbfb6977a2d677805b3b04256103573ca Mon Sep 17 00:00:00 2001 From: Sean McGivern Date: Mon, 17 Apr 2017 13:58:07 +0100 Subject: Fix following with multiple paths `git log --follow` is only supported for a single path. CE doesn't currently pass multiple paths, but EE does. --- app/models/repository.rb | 2 +- spec/models/repository_spec.rb | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/models/repository.rb b/app/models/repository.rb index 2b11ed6128e..ec7acc6b6f7 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -109,7 +109,7 @@ class Repository offset: offset, after: after, before: before, - follow: path.present?, + follow: Array(path).length == 1, skip_merges: skip_merges } diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index 5e5c2b016b6..cbf2fc4a91b 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -171,6 +171,27 @@ describe Repository, models: true do end end + describe '#commits' do + it 'sets follow when path is a single path' do + expect(Gitlab::Git::Commit).to receive(:where).with(a_hash_including(follow: true)).and_call_original.twice + + repository.commits('master', path: 'README.md') + repository.commits('master', path: ['README.md']) + end + + it 'does not set follow when path is multiple paths' do + expect(Gitlab::Git::Commit).to receive(:where).with(a_hash_including(follow: false)).and_call_original + + repository.commits('master', path: ['README.md', 'CHANGELOG']) + end + + it 'does not set follow when there are no paths' do + expect(Gitlab::Git::Commit).to receive(:where).with(a_hash_including(follow: false)).and_call_original + + repository.commits('master') + end + end + describe '#find_commits_by_message' do it 'returns commits with messages containing a given string' do commit_ids = repository.find_commits_by_message('submodule').map(&:id) -- cgit v1.2.1