Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
545a85dc
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
545a85dc
编写于
7月 10, 2016
作者:
D
Douwe Maan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Actually render old and new sections of parallel diff next to each other
上级
92772f85
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
65 addition
and
103 deletion
+65
-103
CHANGELOG
CHANGELOG
+1
-0
features/steps/shared/diff_note.rb
features/steps/shared/diff_note.rb
+2
-2
lib/gitlab/diff/parallel_diff.rb
lib/gitlab/diff/parallel_diff.rb
+55
-74
spec/fixtures/parallel_diff_result.yml
spec/fixtures/parallel_diff_result.yml
+7
-27
未找到文件。
CHANGELOG
浏览文件 @
545a85dc
...
...
@@ -33,6 +33,7 @@ v 8.10.0 (unreleased)
- Fix user creation with stronger minimum password requirements !4054 (nathan-pmt)
- Only show New Snippet button to users that can create snippets.
- PipelinesFinder uses git cache data
- Actually render old and new sections of parallel diff next to each other
- Throttle the update of `project.pushes_since_gc` to 1 minute.
- Check for conflicts with existing Project's wiki path when creating a new project.
- Show last push widget in upstream after push to fork
...
...
features/steps/shared/diff_note.rb
浏览文件 @
545a85dc
...
...
@@ -32,8 +32,8 @@ module SharedDiffNote
end
step
'I leave a diff comment in a parallel view on the left side like "Old comment"'
do
click_parallel_diff_line
(
sample_commit
.
line_code
,
'old'
)
page
.
within
(
"
#{
diff_file_selector
}
form[data-line-code='
#{
sample_commit
.
line_code
}
']"
)
do
click_parallel_diff_line
(
sample_commit
.
del_
line_code
,
'old'
)
page
.
within
(
"
#{
diff_file_selector
}
form[data-line-code='
#{
sample_commit
.
del_
line_code
}
']"
)
do
fill_in
"note[note]"
,
with:
"Old comment"
find
(
".js-comment-button"
).
trigger
(
"click"
)
end
...
...
lib/gitlab/diff/parallel_diff.rb
浏览文件 @
545a85dc
...
...
@@ -8,95 +8,78 @@ module Gitlab
end
def
parallelize
lines
=
[]
skip_next
=
false
i
=
0
free_right_index
=
nil
lines
=
[]
highlighted_diff_lines
=
diff_file
.
highlighted_diff_lines
highlighted_diff_lines
.
each
do
|
line
|
full_line
=
line
.
text
type
=
line
.
type
line_code
=
diff_file
.
line_code
(
line
)
line_new
=
line
.
new_pos
line_old
=
line
.
old_pos
position
=
diff_file
.
position
(
line
)
next_line
=
diff_file
.
next_line
(
line
.
index
)
if
next_line
next_line
=
highlighted_diff_lines
[
next_line
.
index
]
full_next_line
=
next_line
.
text
next_line_code
=
diff_file
.
line_code
(
next_line
)
next_type
=
next_line
.
type
next_position
=
diff_file
.
position
(
next_line
)
end
case
type
case
line
.
type
when
'match'
,
nil
# line in the right panel is the same as in the left one
lines
<<
{
left:
{
type:
type
,
number:
line
_old
,
text:
full_line
,
type:
line
.
type
,
number:
line
.
old_pos
,
text:
line
.
text
,
line_code:
line_code
,
position:
position
},
right:
{
type:
type
,
number:
line
_new
,
text:
full_line
,
type:
line
.
type
,
number:
line
.
new_pos
,
text:
line
.
text
,
line_code:
line_code
,
position:
position
}
}
free_right_index
=
nil
i
+=
1
when
'old'
case
next_type
when
'new'
# Left side has text removed, right side has text added
lines
<<
{
left:
{
type:
type
,
number:
line_old
,
text:
full_line
,
line_code:
line_code
,
position:
position
},
right:
{
type:
next_type
,
number:
line_new
,
text:
full_next_line
,
line_code:
next_line_code
,
position:
next_position
,
}
}
skip_next
=
true
when
'old'
,
'nonewline'
,
nil
# Left side has text removed, right side doesn't have any change
# No next line code, no new line number, no new line text
lines
<<
{
left:
{
type:
type
,
number:
line_old
,
text:
full_line
,
line_code:
line_code
,
position:
position
},
right:
{
type:
next_type
,
number:
nil
,
text:
""
,
line_code:
nil
,
position:
nil
}
lines
<<
{
left:
{
type:
line
.
type
,
number:
line
.
old_pos
,
text:
line
.
text
,
line_code:
line_code
,
position:
position
},
right:
{
type:
nil
,
number:
nil
,
text:
""
,
line_code:
line_code
,
position:
position
}
end
}
# Once we come upon a new line it can be put on the right of this old line
free_right_index
||=
i
i
+=
1
when
'new'
if
skip_next
# Change has been already included in previous line so no need to do it again
skip_next
=
false
next
data
=
{
type:
line
.
type
,
number:
line
.
new_pos
,
text:
line
.
text
,
line_code:
line_code
,
position:
position
}
if
free_right_index
# If an old line came before this without a line on the right, this
# line can be put to the right of it.
lines
[
free_right_index
][
:right
]
=
data
# If there are any other old lines on the left that don't yet have
# a new counterpart on the right, update the free_right_index
next_free_right_index
=
free_right_index
+
1
free_right_index
=
next_free_right_index
<
i
?
next_free_right_index
:
nil
else
# Change is only on the right side, left side has no change
lines
<<
{
left:
{
type:
nil
,
...
...
@@ -105,17 +88,15 @@ module Gitlab
line_code:
line_code
,
position:
position
},
right:
{
type:
type
,
number:
line_new
,
text:
full_line
,
line_code:
line_code
,
position:
position
}
right:
data
}
free_right_index
=
nil
i
+=
1
end
end
end
lines
end
end
...
...
spec/fixtures/parallel_diff_result.yml
浏览文件 @
545a85dc
...
...
@@ -252,27 +252,6 @@
:base_sha: 6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9
:start_sha: 6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9
:head_sha: 570e7b2abdd848b95f2f578043fc23bd6f6fd24d
:right:
:type: old
:number:
:text: ''
:line_code:
:position:
-
:left:
:type: old
:number:
14
:text: |
-<span id="LC14" class="line"> <span class="n">options</span> <span class="o">=</span> <span class="p">{</span> <span class="ss">chdir
:
</span><span class="n">path</span> <span class="p">}</span></span>
:line_code: 2f6fcd96b88b36ce98c38da085c795a27d92a3dd_14_13
:position: !ruby/object:Gitlab::Diff::Position
attributes
:
:old_path: files/ruby/popen.rb
:new_path: files/ruby/popen.rb
:old_line:
14
:new_line:
:base_sha: 6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9
:start_sha: 6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9
:head_sha: 570e7b2abdd848b95f2f578043fc23bd6f6fd24d
:right:
:type: new
:number:
13
...
...
@@ -289,16 +268,17 @@
:start_sha: 6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9
:head_sha: 570e7b2abdd848b95f2f578043fc23bd6f6fd24d
-
:left:
:type:
:number:
:text: ''
:line_code: 2f6fcd96b88b36ce98c38da085c795a27d92a3dd_15_14
:type: old
:number:
14
:text: |
-<span id="LC14" class="line"> <span class="n">options</span> <span class="o">=</span> <span class="p">{</span> <span class="ss">chdir
:
</span><span class="n">path</span> <span class="p">}</span></span>
:line_code: 2f6fcd96b88b36ce98c38da085c795a27d92a3dd_14_13
:position: !ruby/object:Gitlab::Diff::Position
attributes
:
:old_path: files/ruby/popen.rb
:new_path: files/ruby/popen.rb
:old_line:
:new_line:
14
:old_line:
14
:new_line:
:base_sha: 6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9
:start_sha: 6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9
:head_sha: 570e7b2abdd848b95f2f578043fc23bd6f6fd24d
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录