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
014abc9c
Commit
014abc9c
authored
Jun 28, 2018
by
Stan Hu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Handle threaded comments and prepare for inline comments
parent
5728ffbf
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
118 additions
and
45 deletions
+118
-45
lib/bitbucket_server/representation/activity.rb
lib/bitbucket_server/representation/activity.rb
+13
-17
lib/bitbucket_server/representation/comment.rb
lib/bitbucket_server/representation/comment.rb
+61
-8
lib/bitbucket_server/representation/pull_request_comment.rb
lib/bitbucket_server/representation/pull_request_comment.rb
+38
-17
lib/gitlab/bitbucket_server_import/importer.rb
lib/gitlab/bitbucket_server_import/importer.rb
+6
-3
No files found.
lib/bitbucket_server/representation/activity.rb
View file @
014abc9c
...
...
@@ -13,31 +13,27 @@ module BitbucketServer
comment?
&&
raw
[
'commentAnchor'
]
end
def
id
raw
[
'id'
]
end
def
note
comment
[
'text'
]
end
def
comment
return
unless
comment?
def
author_username
author
[
'name'
]
@comment
||=
if
inline_comment?
PullRequestComment
.
new
(
raw_comment
)
else
Comment
.
new
(
raw_comment
)
end
def
author_email
author
[
'emailAddress'
]
end
# XXX Move this into MergeEvent
def
merge_event?
action
==
'MERGED'
end
def
commiter_user
def
commit
t
er_user
commit
.
fetch
(
'committer'
,
{})[
'displayName'
]
end
def
commiter_email
def
commit
t
er_email
commit
.
fetch
(
'committer'
,
{})[
'emailAddress'
]
end
...
...
@@ -61,12 +57,12 @@ module BitbucketServer
private
def
comment
def
raw_
comment
raw
.
fetch
(
'comment'
,
{})
end
def
author
comment
.
fetch
(
'author'
,
{})
raw_
comment
.
fetch
(
'author'
,
{})
end
# Anchor hash:
...
...
lib/bitbucket_server/representation/comment.rb
View file @
014abc9c
module
Bitbucket
module
Bitbucket
Server
module
Representation
# A general comment with the structure:
# "comment": {
# "author": {
# "active": true,
# "displayName": "root",
# "emailAddress": "stanhu+bitbucket@gitlab.com",
# "id": 1,
# "links": {
# "self": [
# {
# "href": "http://localhost:7990/users/root"
# }
# ]
# },
# "name": "root",
# "slug": "root",
# "type": "NORMAL"
# }
# }
# }
class
Comment
<
Representation
::
Base
def
author
user
[
'username'
]
def
id
raw
[
'id'
]
end
def
author_username
author
[
'username'
]
end
def
author_email
author
[
'displayName'
]
end
def
note
raw
.
fetch
(
'content'
,
{}).
fetch
(
'raw'
,
nil
)
raw
[
'text'
]
end
def
created_at
raw
[
'created_on'
]
Time
.
at
(
created_date
/
1000
)
if
created_date
.
is_a?
(
Integer
)
end
def
updated_at
raw
[
'updated_on'
]
||
raw
[
'created_on'
]
Time
.
at
(
updated_date
/
1000
)
if
created_date
.
is_a?
(
Integer
)
end
def
comments
workset
=
[
raw
[
'comments'
]].
compact
all_comments
=
[]
until
workset
.
empty?
comments
=
workset
.
pop
comments
.
each
do
|
comment
|
new_comments
=
comment
.
delete
(
'comments'
)
workset
<<
new_comments
if
new_comments
all_comments
<<
Comment
.
new
(
comment
)
end
end
all_comments
end
private
def
user
raw
.
fetch
(
'user'
,
{})
def
author
raw
.
fetch
(
'author'
,
{})
end
def
created_date
raw
[
'createdDate'
]
end
def
updated_date
raw
[
'updatedDate'
]
end
end
end
...
...
lib/bitbucket_server/representation/pull_request_comment.rb
View file @
014abc9c
module
Bitbucket
module
Bitbucket
Server
module
Representation
# An inline comment with the following structure that identifies
# the part of the diff:
#
# "commentAnchor": {
# "diffType": "EFFECTIVE",
# "fileType": "TO",
# "fromHash": "c5f4288162e2e6218180779c7f6ac1735bb56eab",
# "line": 1,
# "lineType": "ADDED",
# "orphaned": false,
# "path": "CHANGELOG.md",
# "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be"
# }
class
PullRequestComment
<
Comment
def
iid
raw
[
'id
'
]
def
file_type
comment_anchor
[
'fileType
'
]
end
def
f
ile_path
inline
.
fetch
(
'path'
)
def
f
rom_sha
comment_anchor
[
'fromHash'
]
end
def
old_pos
inline
.
fetch
(
'from'
)
def
to_sha
comment_anchor
[
'toHash'
]
end
def
new_pos
inline
.
fetch
(
'to'
)
def
to?
file_type
==
'TO'
end
def
from?
file_type
==
'FROM'
end
def
parent_id
raw
.
fetch
(
'parent'
,
{}).
fetch
(
'id'
,
nil
)
def
new_pos
return
unless
to?
comment_anchor
[
'line'
]
end
def
inline?
raw
.
key?
(
'inline'
)
def
old_pos
return
unless
from?
comment_anchor
[
'line'
]
end
def
has_parent?
raw
.
key?
(
'parent
'
)
def
file_path
comment_anchor
.
fetch
(
'path
'
)
end
private
def
inline
raw
.
fetch
(
'
inline
'
,
{})
def
comment_anchor
raw
.
fetch
(
'
commentAnchor
'
,
{})
end
end
end
...
...
lib/gitlab/bitbucket_server_import/importer.rb
View file @
014abc9c
...
...
@@ -105,11 +105,11 @@ module Gitlab
inline_comments
,
pr_comments
=
comments
.
partition
(
&
:inline_comment?
)
# import_inline_comments(inline_comments, pull_request, merge_request)
import_standalone_pr_comments
(
pr_comments
,
merge_request
)
import_standalone_pr_comments
(
pr_comments
.
map
(
&
:comment
)
,
merge_request
)
end
def
import_merge_event
(
merge_request
,
merge_event
)
committer
=
merge_event
.
commiter_email
committer
=
merge_event
.
commit
t
er_email
return
unless
committer
...
...
@@ -169,6 +169,10 @@ module Gitlab
pr_comments
.
each
do
|
comment
|
begin
merge_request
.
notes
.
create!
(
pull_request_comment_attributes
(
comment
))
comment
.
comments
.
each
do
|
replies
|
merge_request
.
notes
.
create!
(
pull_request_comment_attributes
(
replies
))
end
rescue
StandardError
=>
e
errors
<<
{
type: :pull_request
,
iid:
comment
.
id
,
errors:
e
.
message
}
end
...
...
@@ -180,7 +184,6 @@ module Gitlab
end
def
pull_request_comment_attributes
(
comment
)
byebug
{
project:
project
,
note:
comment
.
note
,
...
...
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