Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
102074c8
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,发现更多精彩内容 >>
提交
102074c8
编写于
6月 02, 2016
作者:
J
James Lopez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more and more refactoring
上级
7c8359b7
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
41 addition
and
46 deletion
+41
-46
lib/gitlab/import_export/import_service.rb
lib/gitlab/import_export/import_service.rb
+9
-13
lib/gitlab/import_export/members_mapper.rb
lib/gitlab/import_export/members_mapper.rb
+25
-24
lib/gitlab/import_export/project_tree_restorer.rb
lib/gitlab/import_export/project_tree_restorer.rb
+3
-1
lib/gitlab/import_export/relation_factory.rb
lib/gitlab/import_export/relation_factory.rb
+1
-1
lib/gitlab/import_export/uploads_saver.rb
lib/gitlab/import_export/uploads_saver.rb
+0
-4
lib/gitlab/import_export/version_checker.rb
lib/gitlab/import_export/version_checker.rb
+3
-3
未找到文件。
lib/gitlab/import_export/import_service.rb
浏览文件 @
102074c8
...
...
@@ -16,7 +16,7 @@ module Gitlab
def
execute
Gitlab
::
ImportExport
::
Importer
.
import
(
archive_file:
@archive_file
,
shared:
@shared
)
if
[
restore_version
,
restore_project_tree
,
restore_repo
,
restore_wiki_repo
,
restore_uploads
].
all?
if
check_version!
&&
[
project_tree
,
repo_restorer
,
wiki_restorer
,
uploads_restorer
].
all?
(
&
:restore
)
project_tree
.
project
else
project_tree
.
project
.
destroy
if
project_tree
.
project
...
...
@@ -26,12 +26,8 @@ module Gitlab
private
def
restore_version
Gitlab
::
ImportExport
::
VersionRestorer
.
restore
(
shared:
@shared
)
end
def
restore_project_tree
project_tree
.
restore
def
check_version!
Gitlab
::
ImportExport
::
VersionChecker
.
check!
(
shared:
@shared
)
end
def
project_tree
...
...
@@ -40,20 +36,20 @@ module Gitlab
namespace_id:
@namespace
.
id
)
end
def
re
store_repo
def
re
po_restorer
Gitlab
::
ImportExport
::
RepoRestorer
.
new
(
path_to_bundle:
repo_path
,
shared:
@shared
,
project:
project_tree
.
project
)
.
restore
project:
project_tree
.
project
)
end
def
restore_wiki_repo
def
wiki_restorer
Gitlab
::
ImportExport
::
RepoRestorer
.
new
(
path_to_bundle:
wiki_repo_path
,
shared:
@shared
,
project:
ProjectWiki
.
new
(
project_tree
.
project
))
.
restore
project:
ProjectWiki
.
new
(
project_tree
.
project
))
end
def
restore_uploads
Gitlab
::
ImportExport
::
UploadsRestorer
.
restore
(
project:
project_tree
.
project
,
shared:
@shared
)
def
uploads_restorer
Gitlab
::
ImportExport
::
UploadsRestorer
.
new
(
project:
project_tree
.
project
,
shared:
@shared
)
end
def
path_with_namespace
(
project_path
)
...
...
lib/gitlab/import_export/members_mapper.rb
浏览文件 @
102074c8
...
...
@@ -12,32 +12,27 @@ module Gitlab
# This needs to run first, as second call would be from generate_map
# which means project members already exist.
default_project_member
@project_member_map
=
Hash
.
new
do
|
_
,
key
|
@note_member_list
<<
key
default_project_member
end
ensure_default_member!
end
def
map
@map
||=
generate_map
end
def
default_project_member
@default_project_member
||=
begin
default_member
=
ProjectMember
.
new
(
default_project_member_hash
)
default_member
.
create!
default_member
.
user
.
id
end
def
default_user_id
@user
.
id
end
def
map
private
def
generate_map
@map
||=
begin
@exported_members
.
inject
(
@project_member_map
)
do
|
hash
,
member
|
@exported_members
.
inject
(
missing_keys_tracking_hash
)
do
|
hash
,
member
|
existing_user
=
User
.
where
(
find_project_user_query
(
member
)).
first
if
existing_user
old_user_id
=
member
[
'user'
][
'id'
]
add_user_as_team_member
(
existing_user
,
member
)
old_user_id
=
member
[
'user'
][
'id'
]
if
existing_user
&&
add_user_as_team_member
(
existing_user
,
member
).
persisted?
hash
[
old_user_id
]
=
existing_user
.
id
end
hash
...
...
@@ -45,21 +40,27 @@ module Gitlab
end
end
private
def
missing_keys_tracking_hash
Hash
.
new
do
|
_
,
key
|
@note_member_list
<<
key
@user
.
id
end
end
def
ensure_default_member!
ProjectMember
.
create!
(
user:
@user
,
access_level:
ProjectMember
::
MASTER
,
source_id:
@project
.
id
,
importing:
true
)
end
def
add_user_as_team_member
(
existing_user
,
member
)
member
[
'user'
]
=
existing_user
ProjectMember
.
create!
(
member_hash
(
member
))
ProjectMember
.
create
(
member_hash
(
member
))
end
def
member_hash
(
member
)
member
.
except
(
'id'
).
merge
(
source_id:
@project
.
id
,
importing:
true
)
end
def
default_project_member_hash
{
user:
@user
,
access_level:
ProjectMember
::
MASTER
,
source_id:
@project
.
id
,
importing:
true
}
end
def
find_project_user_query
(
member
)
user_arel
[
:username
].
eq
(
member
[
'user'
][
'username'
]).
or
(
user_arel
[
:email
].
eq
(
member
[
'user'
][
'email'
]))
end
...
...
lib/gitlab/import_export/project_tree_restorer.rb
浏览文件 @
102074c8
...
...
@@ -80,12 +80,14 @@ module Gitlab
end
def
create_relation
(
relation
,
relation_hash_list
)
[
relation_hash_list
].
flatten
.
map
do
|
relation_hash
|
relation_array
=
[
relation_hash_list
].
flatten
.
map
do
|
relation_hash
|
Gitlab
::
ImportExport
::
RelationFactory
.
create
(
relation_sym:
relation
.
to_sym
,
relation_hash:
relation_hash
.
merge
(
'project_id'
=>
project
.
id
),
members_mapper:
members_mapper
,
user_admin:
@user
.
is_admin?
)
end
relation_hash_list
.
is_a?
(
Array
)
?
relation_array
:
relation_array
.
first
end
end
end
...
...
lib/gitlab/import_export/relation_factory.rb
浏览文件 @
102074c8
...
...
@@ -45,7 +45,7 @@ module Gitlab
if
user_admin
relation_hash
[
'author_id'
]
=
members_map
.
map
[
old_author_id
]
else
relation_hash
[
'author_id'
]
=
members_map
.
default_
project_member
relation_hash
[
'author_id'
]
=
members_map
.
default_
user_id
end
author
=
relation_hash
.
delete
(
'author'
)
...
...
lib/gitlab/import_export/uploads_saver.rb
浏览文件 @
102074c8
...
...
@@ -2,10 +2,6 @@ module Gitlab
module
ImportExport
class
UploadsSaver
def
self
.
save
(
*
args
)
new
(
*
args
).
save
end
def
initialize
(
project
:,
shared
:)
@project
=
project
@shared
=
shared
...
...
lib/gitlab/import_export/version_
restor
er.rb
→
lib/gitlab/import_export/version_
check
er.rb
浏览文件 @
102074c8
module
Gitlab
module
ImportExport
class
Version
Restor
er
class
Version
Check
er
def
self
.
restore
(
*
args
)
new
(
*
args
).
restore
new
(
*
args
).
check
end
def
initialize
(
shared
:)
@shared
=
shared
end
def
restore
def
check!
version
=
File
.
open
(
version_file
,
&
:readline
)
verify_version!
(
version
)
rescue
=>
e
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录