gitlab_git 7.0.0.rc11 → 7.0.0.rc12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/gitlab_git/repository.rb +54 -4
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44a52af0f3a9985bae1ccd85e7cb074682d8b691
|
4
|
+
data.tar.gz: 26e8ffbe31ae2baa9880ba82c568baed3188dd98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04c93841365a6bf23042e5e495189c6dd134047cf54219dcf7cc4aa72b1936da99f2b63cebbbbdb2041005f1a25815d3bf53ecae66660a942e3ea55efdb2e57e
|
7
|
+
data.tar.gz: 794f208951447ba3a5cb71a0908b94e4786a6149f19a31b70072ca65cdb43f4770ab1387769df4374761b89a786c1d1370139faa3c895b23f61103f0d7b0400c
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
7.0.0.
|
1
|
+
7.0.0.rc12
|
@@ -8,6 +8,8 @@ module Gitlab
|
|
8
8
|
class Repository
|
9
9
|
include Gitlab::Git::Popen
|
10
10
|
|
11
|
+
SEARCH_CONTEXT_LINES = 3
|
12
|
+
|
11
13
|
class NoRepository < StandardError; end
|
12
14
|
|
13
15
|
# Default branch in the repository
|
@@ -920,15 +922,63 @@ module Gitlab
|
|
920
922
|
# Return an array of BlobSnippets for lines in +file_contents+ that match
|
921
923
|
# +query+
|
922
924
|
def build_greps(file_contents, query, ref, filename)
|
925
|
+
# The file_contents string is potentially huge so we make sure to loop
|
926
|
+
# through it one line at a time. This gives Ruby the chance to GC lines
|
927
|
+
# we are not interested in.
|
928
|
+
#
|
929
|
+
# We need to do a little extra work because we are not looking for just
|
930
|
+
# the lines that matches the query, but also for the context
|
931
|
+
# (surrounding lines). We will use Enumerable#each_cons to efficiently
|
932
|
+
# loop through the lines while keeping surrounding lines on hand.
|
933
|
+
#
|
934
|
+
# First, we turn "foo\nbar\nbaz" into
|
935
|
+
# [
|
936
|
+
# [nil, -3], [nil, -2], [nil, -1],
|
937
|
+
# ['foo', 0], ['bar', 1], ['baz', 3],
|
938
|
+
# [nil, 4], [nil, 5], [nil, 6]
|
939
|
+
# ]
|
940
|
+
lines_with_index = Enumerator.new do |yielder|
|
941
|
+
# Yield fake 'before' lines for the first line of file_contents
|
942
|
+
(-SEARCH_CONTEXT_LINES..-1).each do |i|
|
943
|
+
yielder.yield [nil, i]
|
944
|
+
end
|
945
|
+
|
946
|
+
# Yield the actual file contents
|
947
|
+
count = 0
|
948
|
+
file_contents.each_line.each_with_index do |line, i|
|
949
|
+
line.chomp!
|
950
|
+
yielder.yield [line, i]
|
951
|
+
count += 1
|
952
|
+
end
|
953
|
+
|
954
|
+
# Yield fake 'after' lines for the last line of file_contents
|
955
|
+
(count+1..count+SEARCH_CONTEXT_LINES).each do |i|
|
956
|
+
yielder.yield [nil, i]
|
957
|
+
end
|
958
|
+
end
|
959
|
+
|
923
960
|
greps = []
|
924
961
|
|
925
|
-
|
926
|
-
|
962
|
+
# Loop through consecutive blocks of lines with indexes
|
963
|
+
lines_with_index.each_cons(2 * SEARCH_CONTEXT_LINES + 1) do |line_block|
|
964
|
+
# Get the 'middle' line and index from the block
|
965
|
+
line, i = line_block[SEARCH_CONTEXT_LINES]
|
966
|
+
|
967
|
+
next unless line && line.match(/#{Regexp.escape(query)}/i)
|
968
|
+
|
969
|
+
# Yay, 'line' contains a match!
|
970
|
+
# Get an array with just the context lines (no indexes)
|
971
|
+
match_with_context = line_block.map(&:first)
|
972
|
+
# Remove 'nil' lines in case we are close to the first or last line
|
973
|
+
match_with_context.compact!
|
974
|
+
|
975
|
+
# Get the line number (1-indexed) of the first context line
|
976
|
+
first_context_line_number = line_block[0][1] + 1
|
927
977
|
|
928
978
|
greps << Gitlab::Git::BlobSnippet.new(
|
929
979
|
ref,
|
930
|
-
|
931
|
-
|
980
|
+
match_with_context,
|
981
|
+
first_context_line_number,
|
932
982
|
filename
|
933
983
|
)
|
934
984
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab_git
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.0.0.
|
4
|
+
version: 7.0.0.rc12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitriy Zaporozhets
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gitlab-linguist
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.21.
|
47
|
+
version: 0.21.2
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.21.
|
54
|
+
version: 0.21.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: charlock_holmes
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|