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
Jérome Perrin
gitlab-ce
Commits
86676476
Commit
86676476
authored
Apr 06, 2012
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Handling big commits & big diff
parent
17a88bb6
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
85 additions
and
53 deletions
+85
-53
app/assets/javascripts/application.js
app/assets/javascripts/application.js
+5
-0
app/assets/stylesheets/common.scss
app/assets/stylesheets/common.scss
+7
-1
app/controllers/commits_controller.rb
app/controllers/commits_controller.rb
+4
-0
app/views/commits/_diffs.html.haml
app/views/commits/_diffs.html.haml
+37
-23
app/views/commits/_text_file.html.haml
app/views/commits/_text_file.html.haml
+5
-1
app/views/commits/show.html.haml
app/views/commits/show.html.haml
+0
-2
db/schema.rb
db/schema.rb
+27
-26
No files found.
app/assets/javascripts/application.js
View file @
86676476
...
...
@@ -74,3 +74,8 @@ function resetMenu() {
function
slugify
(
text
)
{
return
text
.
replace
(
/
[^
-a-zA-Z0-9
]
+/g
,
'
_
'
).
toLowerCase
();
}
function
showDiff
(
link
)
{
$
(
link
).
next
(
'
table
'
).
show
();
$
(
link
).
remove
();
}
app/assets/stylesheets/common.scss
View file @
86676476
...
...
@@ -17,9 +17,15 @@ a {
&
.lined
{
text-decoration
:underlined
;
}
&
.supp_diff_link
{
text-align
:center
;
padding
:
20px
0
;
background
:
#f1f1f1
;
width
:
100%
;
float
:left
;
}
}
.btn
{
background-image
:
-webkit-gradient
(
linear
,
0
0
,
0
100%
,
from
(
#f1f1f1
)
,
color-stop
(
25%
,
#f1f1f1
)
,
to
(
#e6e6e6
));
background-image
:
-webkit-linear-gradient
(
#f1f1f1
,
#f1f1f1
25%
,
#e6e6e6
);
...
...
app/controllers/commits_controller.rb
View file @
86676476
...
...
@@ -34,6 +34,10 @@ class CommitsController < ApplicationController
@line_notes
=
project
.
commit_line_notes
(
@commit
)
@notes_count
=
@line_notes
.
count
+
project
.
commit_notes
(
@commit
).
count
if
@commit
.
diffs
.
size
>
200
&&
!
params
[
:force_show_diff
]
@suppress_diff
=
true
end
end
def
compare
...
...
app/views/commits/_diffs.html.haml
View file @
86676476
-
if
@suppress_diff
.alert-message.block-message
%p
%strong
Warning! Large commit with more then 200 files changed.
%p
To prevent performance issue we rejected diff information.
%p
But if you still want to see diff
=
link_to
"click this link"
,
project_commit_path
(
@project
,
@commit
.
id
,
:force_show_diff
=>
true
),
:class
=>
"dark"
%p
.cgray
Showing
#{
pluralize
(
diffs
.
count
,
"changed file"
)
}
.file_stats
=
render
"commits/diff_head"
,
:diffs
=>
diffs
-
diffs
.
each_with_index
do
|
diff
,
i
|
-
next
if
diff
.
diff
.
empty?
-
file
=
(
@commit
.
tree
/
diff
.
b_path
)
-
file
=
(
@commit
.
prev_commit
.
tree
/
diff
.
a_path
)
unless
file
-
next
unless
file
.diff_file
.diff_file_header
-
if
diff
.
deleted_file
%strong
{
:id
=>
"#{diff.a_path}"
}=
diff
.
a_path
-
else
=
link_to
tree_file_project_ref_path
(
@project
,
@commit
.
id
,
diff
.
b_path
)
do
%strong
{
:id
=>
"#{diff.b_path}"
}=
diff
.
b_path
%br
/
.diff_file_content
-
if
file
.
text?
=
render
"commits/text_file"
,
:diff
=>
diff
,
:index
=>
i
-
elsif
file
.
image?
.diff_file_content_image
%img
{
:src
=>
"data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"
}
-
else
%p
%center
No preview for this file type
-
unless
@suppress_diff
-
diffs
.
each_with_index
do
|
diff
,
i
|
-
next
if
diff
.
diff
.
empty?
-
file
=
(
@commit
.
tree
/
diff
.
b_path
)
-
file
=
(
@commit
.
prev_commit
.
tree
/
diff
.
a_path
)
unless
file
-
next
unless
file
.diff_file
.diff_file_header
-
if
diff
.
deleted_file
%strong
{
:id
=>
"#{diff.a_path}"
}=
diff
.
a_path
-
else
=
link_to
tree_file_project_ref_path
(
@project
,
@commit
.
id
,
diff
.
b_path
)
do
%strong
{
:id
=>
"#{diff.b_path}"
}=
diff
.
b_path
%br
/
.diff_file_content
-
if
file
.
text?
=
render
"commits/text_file"
,
:diff
=>
diff
,
:index
=>
i
-
elsif
file
.
image?
.diff_file_content_image
%img
{
:src
=>
"data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"
}
-
else
%p
%center
No preview for this file type
app/views/commits/_text_file.html.haml
View file @
86676476
%table
-
too_big
=
max_lines
=
diff
.
diff
.
lines
.
count
>
1000
-
if
too_big
=
link_to_function
"Diff suppressed. Click to show"
,
"showDiff(this)"
,
:class
=>
"supp_diff_link"
%table
{
:class
=>
"#{'hide' if too_big}"
}
-
each_diff_line
(
diff
.
diff
.
lines
.
to_a
,
index
)
do
|
line
,
type
,
line_code
,
line_new
,
line_old
|
%tr
.line_holder
-
if
type
==
"match"
...
...
app/views/commits/show.html.haml
View file @
86676476
...
...
@@ -21,8 +21,6 @@
%pre
.commit_message
=
commit_msg_with_link_to_issues
(
@project
,
@commit
.
safe_message
)
%br
%p
.cgray
Showing
#{
pluralize
(
@commit
.
diffs
.
count
,
"changed file"
)
}
=
render
"commits/diffs"
,
:diffs
=>
@commit
.
diffs
=
render
"notes/notes"
,
:tid
=>
@commit
.
id
,
:tt
=>
"commit"
=
render
"notes/per_line_form"
...
...
db/schema.rb
View file @
86676476
...
...
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord
::
Schema
.
define
(
:version
=>
20120
323221339
)
do
ActiveRecord
::
Schema
.
define
(
:version
=>
20120
405211750
)
do
create_table
"events"
,
:force
=>
true
do
|
t
|
t
.
string
"target_type"
...
...
@@ -30,8 +30,8 @@ ActiveRecord::Schema.define(:version => 20120323221339) do
t
.
integer
"assignee_id"
t
.
integer
"author_id"
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
datetime
"created_at"
,
:null
=>
false
t
.
datetime
"updated_at"
,
:null
=>
false
t
.
boolean
"closed"
,
:default
=>
false
,
:null
=>
false
t
.
integer
"position"
,
:default
=>
0
t
.
boolean
"critical"
,
:default
=>
false
,
:null
=>
false
...
...
@@ -43,8 +43,8 @@ ActiveRecord::Schema.define(:version => 20120323221339) do
create_table
"keys"
,
:force
=>
true
do
|
t
|
t
.
integer
"user_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
datetime
"created_at"
,
:null
=>
false
t
.
datetime
"updated_at"
,
:null
=>
false
t
.
text
"key"
t
.
string
"title"
t
.
string
"identifier"
...
...
@@ -52,18 +52,19 @@ ActiveRecord::Schema.define(:version => 20120323221339) do
end
create_table
"merge_requests"
,
:force
=>
true
do
|
t
|
t
.
string
"target_branch"
,
:null
=>
false
t
.
string
"source_branch"
,
:null
=>
false
t
.
integer
"project_id"
,
:null
=>
false
t
.
string
"target_branch"
,
:null
=>
false
t
.
string
"source_branch"
,
:null
=>
false
t
.
integer
"project_id"
,
:null
=>
false
t
.
integer
"author_id"
t
.
integer
"assignee_id"
t
.
string
"title"
t
.
boolean
"closed"
,
:default
=>
false
,
:null
=>
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
text
"st_commits"
t
.
text
"st_diffs"
t
.
boolean
"merged"
,
:default
=>
false
,
:null
=>
false
t
.
boolean
"closed"
,
:default
=>
false
,
:null
=>
false
t
.
datetime
"created_at"
,
:null
=>
false
t
.
datetime
"updated_at"
,
:null
=>
false
t
.
text
"st_commits"
,
:limit
=>
2147483647
t
.
text
"st_diffs"
,
:limit
=>
2147483647
t
.
boolean
"merged"
,
:default
=>
false
,
:null
=>
false
t
.
boolean
"auto_merge"
,
:default
=>
true
,
:null
=>
false
end
add_index
"merge_requests"
,
[
"project_id"
],
:name
=>
"index_merge_requests_on_project_id"
...
...
@@ -73,8 +74,8 @@ ActiveRecord::Schema.define(:version => 20120323221339) do
t
.
string
"noteable_id"
t
.
string
"noteable_type"
t
.
integer
"author_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
datetime
"created_at"
,
:null
=>
false
t
.
datetime
"updated_at"
,
:null
=>
false
t
.
integer
"project_id"
t
.
string
"attachment"
t
.
string
"line_code"
...
...
@@ -87,8 +88,8 @@ ActiveRecord::Schema.define(:version => 20120323221339) do
t
.
string
"name"
t
.
string
"path"
t
.
text
"description"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
datetime
"created_at"
,
:null
=>
false
t
.
datetime
"updated_at"
,
:null
=>
false
t
.
boolean
"private_flag"
,
:default
=>
true
,
:null
=>
false
t
.
string
"code"
t
.
integer
"owner_id"
...
...
@@ -111,8 +112,8 @@ ActiveRecord::Schema.define(:version => 20120323221339) do
t
.
text
"content"
t
.
integer
"author_id"
,
:null
=>
false
t
.
integer
"project_id"
,
:null
=>
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
datetime
"created_at"
,
:null
=>
false
t
.
datetime
"updated_at"
,
:null
=>
false
t
.
string
"file_name"
t
.
datetime
"expires_at"
end
...
...
@@ -145,8 +146,8 @@ ActiveRecord::Schema.define(:version => 20120323221339) do
t
.
datetime
"last_sign_in_at"
t
.
string
"current_sign_in_ip"
t
.
string
"last_sign_in_ip"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
datetime
"created_at"
,
:null
=>
false
t
.
datetime
"updated_at"
,
:null
=>
false
t
.
string
"name"
t
.
boolean
"admin"
,
:default
=>
false
,
:null
=>
false
t
.
integer
"projects_limit"
,
:default
=>
10
...
...
@@ -165,16 +166,16 @@ ActiveRecord::Schema.define(:version => 20120323221339) do
create_table
"users_projects"
,
:force
=>
true
do
|
t
|
t
.
integer
"user_id"
,
:null
=>
false
t
.
integer
"project_id"
,
:null
=>
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
datetime
"created_at"
,
:null
=>
false
t
.
datetime
"updated_at"
,
:null
=>
false
t
.
integer
"project_access"
,
:default
=>
0
,
:null
=>
false
end
create_table
"web_hooks"
,
:force
=>
true
do
|
t
|
t
.
string
"url"
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
datetime
"created_at"
,
:null
=>
false
t
.
datetime
"updated_at"
,
:null
=>
false
end
create_table
"wikis"
,
:force
=>
true
do
|
t
|
...
...
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