Merge branch 'allow-multiple-paths-in-repository-log' into 'master'
Support >1 path in Gitlab::Git::Repository#log See merge request !10291
This commit is contained in:
commit
bf0590b3e2
2 changed files with 29 additions and 5 deletions
|
@ -346,7 +346,12 @@ module Gitlab
|
|||
cmd << "--after=#{options[:after].iso8601}" if options[:after]
|
||||
cmd << "--before=#{options[:before].iso8601}" if options[:before]
|
||||
cmd << sha
|
||||
cmd += %W[-- #{options[:path]}] if options[:path].present?
|
||||
|
||||
# :path can be a string or an array of strings
|
||||
if options[:path].present?
|
||||
cmd << '--'
|
||||
cmd += Array(options[:path])
|
||||
end
|
||||
|
||||
raw_output = IO.popen(cmd) { |io| io.read }
|
||||
lines = offset_in_ruby ? raw_output.lines.drop(offset) : raw_output.lines
|
||||
|
|
|
@ -771,8 +771,8 @@ describe Gitlab::Git::Repository, seed_helper: true do
|
|||
commits = repository.log(options)
|
||||
|
||||
expect(commits.size).to be > 0
|
||||
satisfy do
|
||||
commits.all? { |commit| commit.created_at >= options[:after] }
|
||||
expect(commits).to satisfy do |commits|
|
||||
commits.all? { |commit| commit.time >= options[:after] }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -784,8 +784,27 @@ describe Gitlab::Git::Repository, seed_helper: true do
|
|||
commits = repository.log(options)
|
||||
|
||||
expect(commits.size).to be > 0
|
||||
satisfy do
|
||||
commits.all? { |commit| commit.created_at <= options[:before] }
|
||||
expect(commits).to satisfy do |commits|
|
||||
commits.all? { |commit| commit.time <= options[:before] }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when multiple paths are provided' do
|
||||
let(:options) { { ref: 'master', path: ['PROCESS.md', 'README.md'] } }
|
||||
|
||||
def commit_files(commit)
|
||||
commit.diff(commit.parent_ids.first).deltas.flat_map do |delta|
|
||||
[delta.old_file[:path], delta.new_file[:path]].uniq.compact
|
||||
end
|
||||
end
|
||||
|
||||
it 'only returns commits matching at least one path' do
|
||||
commits = repository.log(options)
|
||||
|
||||
expect(commits.size).to be > 0
|
||||
expect(commits).to satisfy do |commits|
|
||||
commits.none? { |commit| (commit_files(commit) & options[:path]).empty? }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue