Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
5dc84fa5
Commit
5dc84fa5
authored
May 08, 2015
by
Marin Jankovski
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce
parents
0ccc4f19
c4aa7003
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
86 additions
and
17 deletions
+86
-17
CHANGELOG
CHANGELOG
+2
-0
app/helpers/diff_helper.rb
app/helpers/diff_helper.rb
+14
-5
app/helpers/events_helper.rb
app/helpers/events_helper.rb
+8
-4
app/views/projects/diffs/_diffs.html.haml
app/views/projects/diffs/_diffs.html.haml
+5
-3
app/views/projects/diffs/_warning.html.haml
app/views/projects/diffs/_warning.html.haml
+1
-1
doc/update/upgrader.md
doc/update/upgrader.md
+1
-1
docker/README.md
docker/README.md
+2
-2
spec/helpers/diff_helper_spec.rb
spec/helpers/diff_helper_spec.rb
+53
-1
No files found.
CHANGELOG
View file @
5dc84fa5
...
...
@@ -22,6 +22,8 @@ v 7.11.0 (unreleased)
- Fix bug causing `@whatever` inside an issue's first code block to be picked up as a user mention.
- Fix bug causing `@whatever` inside an inline code snippet (backtick-style) to be picked up as a user mention.
- When use change branches link at MR form - save source branch selection instead of target one
- Improve handling of large diffs
-
- Show Atom feed buttons everywhere where applicable.
- Add project activity atom feed.
- Don't crash when an MR from a fork has a cross-reference comment from the target project on one of its commits.
...
...
app/helpers/diff_helper.rb
View file @
5dc84fa5
...
...
@@ -7,14 +7,23 @@ module DiffHelper
end
end
def
safe_diff_files
(
diffs
)
diffs
.
first
(
allowed_diff_size
).
map
do
|
diff
|
Gitlab
::
Diff
::
File
.
new
(
diff
)
def
allowed_diff_lines
if
diff_hard_limit_enabled?
Commit
::
DIFF_HARD_LIMIT_LINES
else
Commit
::
DIFF_SAFE_LINES
end
end
def
show_diff_size_warning?
(
diffs
)
diffs
.
size
>
allowed_diff_size
def
safe_diff_files
(
diffs
)
lines
=
0
safe_files
=
[]
diffs
.
first
(
allowed_diff_size
).
each
do
|
diff
|
lines
+=
diff
.
diff
.
lines
.
count
break
if
lines
>
allowed_diff_lines
safe_files
<<
Gitlab
::
Diff
::
File
.
new
(
diff
)
end
safe_files
end
def
diff_hard_limit_enabled?
...
...
app/helpers/events_helper.rb
View file @
5dc84fa5
...
...
@@ -25,12 +25,16 @@ module EventsHelper
def
event_filter_link
(
key
,
tooltip
)
key
=
key
.
to_s
active
=
if
@event_filter
.
active?
key
'active'
end
active
=
'active'
if
@event_filter
.
active?
(
key
)
link_opts
=
{
class:
'event_filter_link'
,
id:
"
#{
key
}
_event_filter"
,
title:
"Filter by
#{
tooltip
.
downcase
}
"
,
data:
{
toggle:
'tooltip'
,
placement:
'top'
}
}
content_tag
:li
,
class:
"filter_icon
#{
active
}
"
do
link_to
request
.
path
,
class:
'has_tooltip event_filter_link'
,
id:
"
#{
key
}
_event_filter"
,
'data-original-title'
=>
'Filter by '
+
tooltip
.
downcase
do
link_to
request
.
path
,
link_opts
do
icon
(
icon_for_event
[
key
])
+
content_tag
(
:span
,
' '
+
tooltip
)
end
end
...
...
app/views/projects/diffs/_diffs.html.haml
View file @
5dc84fa5
...
...
@@ -5,11 +5,13 @@
=
parallel_diff_btn
=
render
'projects/diffs/stats'
,
diffs:
diffs
-
if
show_diff_size_warning?
(
diffs
)
=
render
'projects/diffs/warning'
,
diffs:
diffs
-
diff_files
=
safe_diff_files
(
diffs
)
-
if
diff_files
.
count
<
diffs
.
size
=
render
'projects/diffs/warning'
,
diffs:
diffs
,
shown_files_count:
diff_files
.
count
.files
-
safe_diff_files
(
diffs
)
.
each_with_index
do
|
diff_file
,
index
|
-
diff_files
.
each_with_index
do
|
diff_file
,
index
|
=
render
'projects/diffs/file'
,
diff_file:
diff_file
,
i:
index
,
project:
project
-
if
@diff_timeout
...
...
app/views/projects/diffs/_warning.html.haml
View file @
5dc84fa5
...
...
@@ -14,6 +14,6 @@
=
link_to
"Email patch"
,
merge_request_path
(
@merge_request
,
format: :patch
),
class:
"btn btn-warning btn-sm"
%p
To preserve performance only
%strong
#{
allowed_diff_size
}
of
#{
diffs
.
size
}
%strong
#{
shown_files_count
}
of
#{
diffs
.
size
}
files are displayed.
doc/update/upgrader.md
View file @
5dc84fa5
docker/README.md
View file @
5dc84fa5
...
...
@@ -94,7 +94,7 @@ sudo docker build --tag gitlab-data docker/data/
sudo
docker build
--tag
gitlab-app:7.10.1 docker/app/
```
After this run the images as described in the pre
piv
ous section.
After this run the images as described in the pre
vi
ous section.
We assume using a data volume container, this will simplify migrations and backups.
This empty container will exist to persist as volumes the 3 directories used by GitLab, so remember not to delete it.
...
...
spec/helpers/diff_helper_spec.rb
View file @
5dc84fa5
...
...
@@ -5,7 +5,8 @@ describe DiffHelper do
let
(
:project
)
{
create
(
:project
)
}
let
(
:commit
)
{
project
.
commit
(
sample_commit
.
id
)
}
let
(
:diff
)
{
commit
.
diffs
.
first
}
let
(
:diffs
)
{
commit
.
diffs
}
let
(
:diff
)
{
diffs
.
first
}
let
(
:diff_file
)
{
Gitlab
::
Diff
::
File
.
new
(
diff
)
}
describe
'diff_hard_limit_enabled?'
do
...
...
@@ -30,6 +31,57 @@ describe DiffHelper do
end
end
describe
'allowed_diff_lines'
do
it
'should return hard limit for number of lines in a diff if force diff is true'
do
allow
(
controller
).
to
receive
(
:params
)
{
{
force_show_diff:
true
}
}
expect
(
allowed_diff_lines
).
to
eq
(
50000
)
end
it
'should return safe limit for numbers of lines a diff if force diff is false'
do
expect
(
allowed_diff_lines
).
to
eq
(
5000
)
end
end
describe
'safe_diff_files'
do
it
'should return all files from a commit that is smaller than safe limits'
do
expect
(
safe_diff_files
(
diffs
).
length
).
to
eq
(
2
)
end
it
'should return only the first file if the diff line count in the 2nd file takes the total beyond safe limits'
do
diffs
[
1
].
diff
.
stub
(
lines:
[
""
]
*
4999
)
#simulate 4999 lines
expect
(
safe_diff_files
(
diffs
).
length
).
to
eq
(
1
)
end
it
'should return all files from a commit that is beyond safe limit for numbers of lines if force diff is true'
do
allow
(
controller
).
to
receive
(
:params
)
{
{
force_show_diff:
true
}
}
diffs
[
1
].
diff
.
stub
(
lines:
[
""
]
*
4999
)
#simulate 4999 lines
expect
(
safe_diff_files
(
diffs
).
length
).
to
eq
(
2
)
end
it
'should return only the first file if the diff line count in the 2nd file takes the total beyond hard limits'
do
allow
(
controller
).
to
receive
(
:params
)
{
{
force_show_diff:
true
}
}
diffs
[
1
].
diff
.
stub
(
lines:
[
""
]
*
49999
)
#simulate 49999 lines
expect
(
safe_diff_files
(
diffs
).
length
).
to
eq
(
1
)
end
it
'should return only a safe number of file diffs if a commit touches more files than the safe limits'
do
large_diffs
=
diffs
*
100
#simulate 200 diffs
expect
(
safe_diff_files
(
large_diffs
).
length
).
to
eq
(
100
)
end
it
'should return all file diffs if a commit touches more files than the safe limits but force diff is true'
do
allow
(
controller
).
to
receive
(
:params
)
{
{
force_show_diff:
true
}
}
large_diffs
=
diffs
*
100
#simulate 200 diffs
expect
(
safe_diff_files
(
large_diffs
).
length
).
to
eq
(
200
)
end
it
'should return a limited file diffs if a commit touches more files than the hard limits and force diff is true'
do
allow
(
controller
).
to
receive
(
:params
)
{
{
force_show_diff:
true
}
}
very_large_diffs
=
diffs
*
1000
#simulate 2000 diffs
expect
(
safe_diff_files
(
very_large_diffs
).
length
).
to
eq
(
1000
)
end
end
describe
'parallel_diff'
do
it
'should return an array of arrays containing the parsed diff'
do
expect
(
parallel_diff
(
diff_file
,
0
)).
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment