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
1067b007
Commit
1067b007
authored
Sep 04, 2014
by
Marin Jankovski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Duplicate the behaviour and refactor for use with parallel diff.
parent
b54f2393
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
59 additions
and
6 deletions
+59
-6
app/helpers/commits_helper.rb
app/helpers/commits_helper.rb
+7
-0
app/views/projects/commits/_parallel_view.html.haml
app/views/projects/commits/_parallel_view.html.haml
+7
-6
lib/gitlab/diff_parser.rb
lib/gitlab/diff_parser.rb
+45
-0
No files found.
app/helpers/commits_helper.rb
View file @
1067b007
...
@@ -23,6 +23,13 @@ module CommitsHelper
...
@@ -23,6 +23,13 @@ module CommitsHelper
end
end
end
end
def
side_diff_line
(
diff
,
index
)
Gitlab
::
DiffParser
.
new
(
diff
.
diff
.
lines
.
to_a
,
diff
.
new_path
)
.
each_for_parallel
do
|
full_line
,
type
,
line_code
,
line_new
,
line_old
,
next_line
|
yield
(
full_line
,
type
,
line_code
,
line_new
,
line_old
,
next_line
)
end
end
def
each_diff_line_near
(
diff
,
index
,
expected_line_code
)
def
each_diff_line_near
(
diff
,
index
,
expected_line_code
)
max_number_of_lines
=
16
max_number_of_lines
=
16
...
...
app/views/projects/commits/_parallel_view.html.haml
View file @
1067b007
/ Side-by-side diff view
/ Side-by-side diff view
%div
.text-file
%div
.text-file
%table
%table
-
each_diff_line
(
diff
,
index
)
do
|
line
,
type
,
line_code
,
line_new
,
line_old
,
raw_line
,
e
|
-
side_diff_line
(
diff
,
index
)
do
|
line
,
type
,
line_code
,
line_new
,
line_old
,
next_line
|
-
next
if
type
==
'new'
%tr
.line_holder.parallel
{
id:
line_code
,
class:
"#{type}"
}
%tr
.line_holder.parallel
{
id:
line_code
,
class:
"#{type}"
}
-
if
type
!=
'match'
-
if
type
!=
'match'
%td
.old_line
%td
.old_line
=
link_to
raw
(
type
==
"new"
?
" "
:
line_old
),
"#
#{
line_code
}
"
,
id:
line_code
=
link_to
raw
(
line_old
),
"#
#{
line_code
}
"
,
id:
line_code
-
if
type
==
'old'
-
if
type
==
'old'
%td
.line_content
{
class:
"parallel noteable_line old #{line_code}"
,
"line_code"
=>
line_code
}=
line
%td
.line_content
{
class:
"parallel noteable_line old #{line_code}"
,
"line_code"
=>
line_code
}=
raw
line
-
else
-
else
%td
.line_content.parallel
=
line
%td
.line_content.parallel
=
line
%td
.new_line
{
data:
{
linenumber:
line_new
}}
%td
.new_line
{
data:
{
linenumber:
line_new
}}
=
link_to
raw
(
type
==
"old"
?
" "
:
line_new
)
,
"#
#{
line_code
}
"
,
id:
line_code
=
link_to
raw
(
line_new
)
,
"#
#{
line_code
}
"
,
id:
line_code
-
if
type
==
'
new
'
-
if
type
==
'
old
'
%td
.line_content.parallel
{
class:
"noteable_line
#{type} #{line_code}"
,
"line_code"
=>
line_code
}=
line
%td
.line_content.parallel
{
class:
"noteable_line
new #{line_code}"
,
"line_code"
=>
line_code
}=
raw
next_
line
-
else
-
else
%td
.line_content.parallel
=
line
%td
.line_content.parallel
=
line
lib/gitlab/diff_parser.rb
View file @
1067b007
...
@@ -50,6 +50,51 @@ module Gitlab
...
@@ -50,6 +50,51 @@ module Gitlab
end
end
end
end
def
each_for_parallel
line_old
=
1
line_new
=
1
type
=
nil
lines_arr
=
::
Gitlab
::
InlineDiff
.
processing
lines
lines_arr
.
each_cons
(
2
)
do
|
line
,
next_line
|
raw_line
=
line
.
dup
next
if
filename?
(
line
)
full_line
=
html_escape
(
line
.
gsub
(
/\n/
,
''
))
full_line
=
::
Gitlab
::
InlineDiff
.
replace_markers
full_line
next_line
=
html_escape
(
next_line
.
gsub
(
/\n/
,
''
))
next_line
=
::
Gitlab
::
InlineDiff
.
replace_markers
next_line
if
line
.
match
(
/^@@ -/
)
type
=
"match"
line_old
=
line
.
match
(
/\-[0-9]*/
)[
0
].
to_i
.
abs
rescue
0
line_new
=
line
.
match
(
/\+[0-9]*/
)[
0
].
to_i
.
abs
rescue
0
next
if
line_old
==
1
&&
line_new
==
1
#top of file
yield
(
full_line
,
type
,
nil
,
line_new
,
line_old
)
next
else
type
=
identification_type
(
line
)
line_code
=
generate_line_code
(
new_path
,
line_new
,
line_old
)
yield
(
full_line
,
type
,
line_code
,
line_new
,
line_old
,
next_line
)
end
if
line
[
0
]
==
"+"
line_new
+=
1
elsif
line
[
0
]
==
"-"
line_old
+=
1
else
line_new
+=
1
line_old
+=
1
end
end
end
def
empty?
def
empty?
@lines
.
empty?
@lines
.
empty?
end
end
...
...
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