Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
heptapod
heptapod
Commits
7503a6c81a90
Commit
7503a6c8
authored
Nov 11, 2015
by
Douwe Maan
Browse files
Store and show reason why import failed.
parent
a64cce52848f
Changes
5
Hide whitespace changes
Inline
Side-by-side
app/models/project.rb
View file @
7503a6c8
...
...
@@ -310,7 +310,5 @@
def
add_import_job
if
forked?
unless
RepositoryForkWorker
.
perform_async
(
id
,
forked_from_project
.
path_with_namespace
,
self
.
namespace
.
path
)
import_fail
end
RepositoryForkWorker
.
perform_async
(
self
.
id
,
forked_from_project
.
path_with_namespace
,
self
.
namespace
.
path
)
else
...
...
@@ -316,6 +314,6 @@
else
RepositoryImportWorker
.
perform_async
(
id
)
RepositoryImportWorker
.
perform_async
(
self
.
id
)
end
end
def
clear_import_data
...
...
@@ -318,7 +316,11 @@
end
end
def
clear_import_data
update
(
import_error:
nil
)
ProjectCacheWorker
.
perform_async
(
self
.
id
)
self
.
import_data
.
destroy
if
self
.
import_data
end
...
...
app/views/projects/imports/new.html.haml
View file @
7503a6c8
-
page_title
"Import repository"
%h3
.page-title
-
if
@project
.
import_failed?
Import failed. Retry?
-
else
Import repository
Import repository
%hr
...
...
@@ -7,6 +4,13 @@
%hr
-
if
@project
.
import_failed?
.alert.alert-danger
%p
The repository could not be imported.
%pre
.prepend-top-10
:preserve
#{
@project
.
import_error
.
try
(
:strip
)
}
=
form_for
@project
,
url:
namespace_project_import_path
(
@project
.
namespace
,
@project
),
method: :post
,
html:
{
class:
'form-horizontal'
}
do
|
f
|
.form-group.import-url-data
=
f
.
label
:import_url
,
class:
'control-label'
do
...
...
app/workers/repository_fork_worker.rb
View file @
7503a6c8
...
...
@@ -13,6 +13,5 @@
end
result
=
gitlab_shell
.
fork_repository
(
source_path
,
target_path
)
unless
result
logger
.
error
(
"Unable to fork project
#{
project_id
}
for repository
#{
source_path
}
->
#{
target_path
}
"
)
...
...
@@ -17,3 +16,4 @@
unless
result
logger
.
error
(
"Unable to fork project
#{
project_id
}
for repository
#{
source_path
}
->
#{
target_path
}
"
)
project
.
update
(
import_error:
"The project could not be forked."
)
project
.
import_fail
...
...
@@ -19,5 +19,4 @@
project
.
import_fail
project
.
save
return
end
...
...
@@ -21,8 +20,7 @@
return
end
if
project
.
valid_repo?
ProjectCacheWorker
.
perform_async
(
project
.
id
)
project
.
import_finish
else
unless
project
.
valid_repo?
logger
.
error
(
"Project
#{
id
}
had an invalid repository after fork"
)
project
.
update
(
import_error:
"The forked repository is invalid."
)
project
.
import_fail
...
...
@@ -28,4 +26,4 @@
project
.
import_fail
logger
.
error
(
"Project
#{
id
}
had an invalid repository after fork"
)
return
end
...
...
@@ -30,5 +28,5 @@
end
project
.
save
project
.
import_finish
end
end
app/workers/repository_import_worker.rb
View file @
7503a6c8
...
...
@@ -7,9 +7,11 @@
def
perform
(
project_id
)
project
=
Project
.
find
(
project_id
)
unless
project
.
import_url
==
Project
::
UNKNOWN_IMPORT_URL
import_result
=
gitlab_shell
.
send
(
:import_repository
,
project
.
path_with_namespace
,
project
.
import_url
)
return
project
.
import_fail
unless
import_result
if
project
.
import_url
==
Project
::
UNKNOWN_IMPORT_URL
# In this case, we only want to import issues, not a repository.
unless
project
.
create_repository
project
.
update
(
import_error:
"The repository could not be created."
)
project
.
import_fail
return
end
else
...
...
@@ -15,6 +17,10 @@
else
unless
project
.
create_repository
return
project
.
import_fail
begin
import_result
=
gitlab_shell
.
import_repository
(
project
.
path_with_namespace
,
project
.
import_url
)
rescue
Gitlab
::
Shell
::
Error
=>
e
project
.
update
(
import_error:
e
.
message
)
project
.
import_fail
return
end
end
...
...
@@ -18,19 +24,19 @@
end
end
data_import_result
=
case
project
.
import_type
when
'github'
Gitlab
::
GithubImport
::
Importer
.
new
(
project
).
execute
when
'gitlab'
Gitlab
::
GitlabImport
::
Importer
.
new
(
project
).
execute
when
'bitbucket'
Gitlab
::
BitbucketImport
::
Importer
.
new
(
project
).
execute
when
'google_code'
Gitlab
::
G
oogle
C
ode
Import
::
Importer
.
new
(
project
).
execute
when
'fogbugz'
Gitlab
::
FogbugzImport
::
Importer
.
new
(
project
).
execute
els
e
tru
e
end
return
project
.
import_fail
unless
data_import_result
data_import_result
=
case
project
.
import_type
when
'github'
Gitlab
::
GithubImport
::
Importer
.
new
(
project
).
execute
when
'gitlab'
Gitlab
::
GitlabImport
::
Importer
.
new
(
project
).
execute
when
'bitbucket'
Gitlab
::
BitbucketImport
::
Importer
.
new
(
project
).
execute
when
'g
oogle
_c
ode
'
Gitlab
::
GoogleCodeImport
::
Importer
.
new
(
project
).
execute
when
'fogbugz'
Gitlab
::
FogbugzImport
::
Importer
.
new
(
project
).
execut
e
els
e
true
end
...
...
@@ -36,4 +42,12 @@
Gitlab
::
BitbucketImport
::
KeyDeleter
.
new
(
project
).
execute
if
project
.
import_type
==
'bitbucket'
unless
data_import_result
project
.
update
(
import_error:
"The remote issue data could not be imported."
)
project
.
import_fail
return
end
if
project
.
import_type
==
'bitbucket'
Gitlab
::
BitbucketImport
::
KeyDeleter
.
new
(
project
).
execute
end
project
.
import_finish
...
...
@@ -38,6 +52,7 @@
project
.
import_finish
project
.
save
ProjectCacheWorker
.
perform_async
(
project
.
id
)
# Explicitly update mirror so that upstream remote is created and fetched
project
.
update_mirror
end
end
lib/gitlab/backend/shell.rb
View file @
7503a6c8
module
Gitlab
class
Shell
class
AccessDenied
<
StandardError
;
end
class
Error
<
StandardError
;
end
class
KeyAdder
<
Struct
.
new
(
:io
)
def
add_key
(
id
,
key
)
...
...
@@ -36,8 +36,9 @@
# import_repository("gitlab/gitlab-ci", "https://github.com/randx/six.git")
#
def
import_repository
(
name
,
url
)
Gitlab
::
Utils
.
system_silent
([
gitlab_shell_projects_path
,
'import-project'
,
"
#{
name
}
.git"
,
url
,
'240'
])
output
,
status
=
Popen
::
popen
([
gitlab_shell_projects_path
,
'import-project'
,
"
#{
name
}
.git"
,
url
,
'240'
])
raise
Error
,
output
unless
status
.
zero?
true
end
# Move repository
...
...
Write
Preview
Supports
Markdown
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